SQL按日期分组统计满足条件的去重ID数,重复计数问题如何解决?
问题原因
你现有代码的问题在于计算Click_count时使用SUM对符合条件的行直接计数,同一个ID如果有多条满足Company="Us"且Click=1的记录,就会被重复累加,和你需要的满足条件的唯一ID数需求不符。
解决方案
将Click_count的计算逻辑改为COUNT(DISTINCT)结合CASE语句实现,修改后代码如下:
create table grouped as select date , count(distinct ID) as ID_count , count(distinct case when Company = 'Us' and Click = 1 then ID else null end) as Click_count from have group by 1
逻辑说明
- CASE语句会对满足
Company="Us"且Click=1的记录返回对应的ID值,不满足的记录返回NULL COUNT(DISTINCT)统计时会自动忽略NULL值,仅对非空的ID做去重计数,完美匹配你要的符合条件的唯一ID数需求,运行后即可得到你预期的输出结果。
内容的提问来源于stack exchange,提问作者amestrian
相关产品推荐
相关产品推荐

