2012-03-05 109 views
0

而且這個問題:MySQL - Conditional COUNT with GROUP BYMySQL的 - 條件COUNT/SUM部分2

從MySQL開始:

SELECT puid, 
COUNT(DISTINCT CASE WHEN droid_v > 0 THEN droid_v END) AS droid, 
COUNT(DISTINCT sig_v) AS sig, 
SUM(`Ext`) AS hits 
FROM temp 
GROUP BY puid 

可能引入只會給一個結果,其中SUM(``Ext``) AS hits大於0的條件?

基於上面的查詢,我的數據集返回SUM值爲0的場合 - 這是因爲我沒有在總結之前檢查NoExt的內容。

我想我應該在Count語句中添加一個AND,以檢查NoExt是否> 0,我看不到這適合在哪裏。

我已經試過的COUNT(DISTINCT CASE WHEN droid_v > 0 THEN droid_v END)AND Ext>0 AS droid,數排列,但我很出我的語法深度在這一點......

我有一種感覺,我可能要做到這一點對我的工具的Python端,但是很高興知道這是否可以在MySQL端實現。

回答

2

只需添加:

HAVING SUM(`Ext`) > 0 

要在GROUP BY後的查詢結束。

HAVING有點像WHERE,但對GROUP BY指定的組進行操作,允許您只包含所需的組。

+0

嗯。這殺死了phpmyadmin。 (引導我走出桌面視圖,並把我帶回localhost/phpmyadmin。好奇,我會在別處檢查。 – Jay 2012-03-05 03:29:11

+0

找到了它 - 這是一個安置問題 - 它需要成爲最後一行,完美地工作,謝謝 – Jay 2012-03-05 03:30:59

+0

'HAVING'在'GROUP BY'後面:'GROUP BY puid HAVING SUM('Ext')> 0' – 2012-03-05 03:32:15