SQL按月统计唯一user_id频次出现分组报错该如何解决
报错原因
当SQL使用GROUP BY分组查询时,SELECT子句中出现的字段必须满足两个条件之一:要么是GROUP BY指定的分组字段,要么是经过聚合函数计算后的结果。你原查询中SELECT了user_id字段,但该字段既没有出现在GROUP BY的分组规则里,也没有被聚合函数处理,数据库无法判断同一月份分组下的多个user_id该返回哪一个,因此触发报错。
正确查询语句
SELECT EXTRACT(MONTH FROM date) as month, COUNT(DISTINCT user_id) AS `count of unique user_id` FROM TABLE WHERE date >= '2020-09-01' GROUP BY month ORDER BY month
语句说明
COUNT(DISTINCT user_id)会自动统计每个月份分组下不重复的user_id总数,正好匹配你要的每月唯一ID数量统计需求SELECT子句仅保留分组字段month和聚合计算后的计数字段,完全符合GROUP BY的语法规则- 额外增加的
ORDER BY month会让查询结果按月份从小到大排序,和你预期的输出格式一致
内容的提问来源于stack exchange,提问作者mabiel
相关产品推荐
相关产品推荐

