2012-03-15 39 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

case語句會做很好:

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 

如果你想每個ID計數,然後使用它。

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 2012-03-15 02:48:09

0

我知道這計數的人的數量

你確定嗎?它在我看來似乎返回id s,其中一個的計數大於或等於零的計數。

如果您很高興查詢能夠滿足您的要求,但您希望扭轉效果 - 例如,返回id S其中,其零理貨大於或等於其的人的理貨 - 然後就改變比較操作:

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)