Подсчет нескольких запросов данных для одного столбца

#asp.net #sql #database #count

#asp.net #sql #База данных #подсчет

Вопрос:

У меня есть состояние имени столбца (int), в которое вставляются только 0 и 1 в зависимости от логики, мне нужен запрос count, который может подсчитать, сколько 0 и сколько 1 в таблице в одном запросе, например:

Выберите Count (состояние) из ProductDetail……

Ответ №1:

 select
    sum(state) countOfOnes,
    sum(decode(state, 0, 1, 0)) countOfZeros 
from
    productDetail
;
  

или

 select
    sum(state) countOfOnes,
    count(*) - sum(state) countOfZeros 
from
    productDetail
;
  

или

 select
    state, 
    count(*) over (partition by state order by state) countOfState
from
    productDetail
;
  

Первые два примера вернут одну строку с двумя столбцами:

 countOfOnes  countOfZeros
=========================
154          21  
  

Третий пример вернет две строки с двумя столбцами, по одной строке на состояние.

 state        countOfState
=========================
0            21
1            154  
  

Комментарии:

1. Количество символов и единиц .. встроено ли это в feauture в sql server

2. я думал, что мы используем As для результирующего столбца

3. еще одна вещь, если я хочу использовать оба результирующих столбца в asp.net как я буду это делать в качестве отдельного int, потому что запрос вернет dt, должен ли я сделать что-то вроде этого dt.Rows[0][0] , dt.Rows [0][1]

Ответ №2:

Другой вариант:

 select 
  count(*) countOverall,
  sum(state) countOfOnes,
  count(*) - sum(state) countOfZeroes
from
  productDetail;
  

Ответ №3:

 select count(state) from productDetail Where state = 0
select count(state) from productDetail Where state = 1
  

Комментарии:

1. Это два утверждения… Операционная система запросила один запрос.