我想要的SQL是这样的:
SELECT week_no, type,
SELECT count(distinct user_id) FROM group WHERE pts > 0
FROM base_table
GROUP BY week_no, type
但我知道我可以使用COUNT(DISTINCT user_id)
来计算每个组中的用户总数,但我如何计算符合条件的用户数量'pts> 0' ?
我正在使用mysql,
感谢。
答案 0 :(得分:3)
您可能想要条件聚合:
SELECT week_no, type, COUNT(DISTINCT CASE WHEN pts > 0 THEN user_id END)
FROM base_table
GROUP BY week_no, type;
的 SqlFiddleDemo
强>
答案 1 :(得分:1)
组的条件是使用"有"条款
SELECT count(user_id)FROM group group by user_id having pts> 0
答案 2 :(得分:0)
SELECT week_no, type, COUNT(DISTINCT user_id )
FROM base_table
where pts > 0
GROUP BY week_no, type
在where子句中过滤用户ID。