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狀態獲取結果?
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狀態獲取結果?
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
子句後WHERE
和GROUP BY
執行從而可以解決聚合函數
使用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
請嘗試以下。
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
您提供了不完整的查詢,是嗎?應該有一個「GROUP BY」的地方 – zerkms 2013-05-14 04:47:06
@zerkms謝謝我更新了我的查詢 – PSR 2013-05-14 04:51:43