2012-03-15 2 views
1

У меня есть столбец, который имеет значение, равное 0 или 1. Как я могу подсчитать числа нулей?Как подсчитать количество нулей в sql?

SELECT A.id 
FROM table1 A 
GROUP BY A.id 
HAVING SUM(A.zeroorone) >= 
ALL (SELECT SUM(AA.zeroorone) 
    FROM table1 AA 
    GROUP BY AA.id) 

Я знаю, что это число числа. Я не могу показаться, чтобы получить его

Любая помощь очень ценится

ответ

4

Заявление СЛУЧАЙ будет делать красиво:

SELECT SUM(CASE WHEN zeroorone = 0 
       THEN 1 
       ELSE 0 END) AS TOTAL_ZEROS 
    FROM table1 
1

Если вы просто хотите, количество нулей в таблице, а затем использовать это:

SELECT COUNT(1) AS COUNT_OF_ZEROES 
FROM table1 
WHERE zeroone = 0 

Если вы хотите использовать счет на один идентификатор, используйте это.

SELECT id, COUNT(1) AS COUNT_OF_ZEROES 
FROM table1 
WHERE zeroone = 0 
GROUP BY id 
4

Использование граф ...

SELECT COUNT(*) FROM table1 
WHERE zeroone=0 
+0

+1 в зависимости от цели это может быть лучшей альтернативой. Только причина, по которой я бы предпочел оператор CASE, заключается в том, что этот счет нужно использовать в более крупном запросе. – bernie

0

я знаю, что это подсчитывает количество единиц

Вы уверены? Скорее мне кажется, что он возвращает id, где его число больше или равно его значению нулей.

Если вы счастливы, что запрос выполняет то, что вы хотите, но вы хотите изменить эффект - например, вернуться id сек, где ее число нулей больше или равен его бирку из них - то просто изменить оператор сравнения:

SELECT A.id 
FROM table1 A 
GROUP BY A.id 
HAVING SUM(A.zeroorone) <= -- changed from >= 
ALL (SELECT SUM(AA.zeroorone) 
    FROM table1 AA 
    GROUP BY AA.id) 
Смежные вопросы