MySQL - 条件COUNT / SUM第2部分

时间:2012-03-05 03:22:36

标签: mysql sql aggregate-functions

继续这个问题:MySQL - Conditional COUNT with GROUP BY

从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方面实现这将是很好的。

1 个答案:

答案 0 :(得分:2)

只需添加:

HAVING SUM(`Ext`) > 0

在GROUP BY之后的查询结束。

HAVING有点像WHERE,但在GROUP BY指定的组上运行,允许您只包含所需的组。