2013-05-14 29 views
0
SELECT field_name, 
SUM(CASE WHEN field_name is not null THEN 1 ELSE 0 END) as count from table_name group by department 


RESULT IS: 

field_name count 

AAA    9 
BBB    0 
CCC    7 

但是我怎樣才能得到只有在第二列有更多0的行。如何從MySQL中的CASE狀態獲取結果?

+0

您提供了不完整的查詢,是嗎?應該有一個「GROUP BY」的地方 – zerkms 2013-05-14 04:47:06

+0

@zerkms謝謝我更新了我的查詢 – PSR 2013-05-14 04:51:43

回答

1
SELECT field_name, 
     SUM(CASE WHEN field_name is not null 
        THEN 1 
        ELSE 0 
      END) as count 
    from table_name 
group by department 
    HAVING `count` > 0 

HAVING子句後WHEREGROUP BY執行從而可以解決聚合函數

3

使用HAVING條款:

SELECT field_name, 
    SUM(CASE WHEN field_name IS NOT NULL 
       THEN 1 ELSE 0 END) AS `count` 
    FROM table_name 
GROUP BY department 
    HAVING `count` > 0 

我覺得你選擇,而不是field_name或者你department需要分組field_name

+1

OP提供的不是一個完整的查詢,您的查詢看起來很奇怪;-) – zerkms 2013-05-14 04:47:30

+0

@zerkms - 是編輯查詢與.... :) – hims056 2013-05-14 04:49:48

+1

您的答案是好吧,我不能接受多個answer.so對你的+1 – PSR 2013-05-14 04:59:13

1

請嘗試以下。

SELECT field_name, SUM(CASE WHEN field_name is not null THEN 1 ELSE 0 END) as count 
from table_name 
where field_name is not null 

實際上,第二個查詢是很好理解的,但第一個查詢是更好:)

SELECT field_name, SUM(CASE WHEN field_name is not null THEN 1 ELSE 0 END) as count 
from table_name 
where SUM(CASE WHEN field_name is not null THEN 1 ELSE 0 END) > 0 
+0

你的回答很好。我不能接受一個以上的answer.so +1ü – PSR 2013-05-14 05:02:18

+0

對不起,我的瀏覽器通過部門 HAVING切列代碼:(後 組是更好的查詢:) 好運! – TaeL 2013-05-14 07:37:38