MySQL统计user_id出现次数对应频次的SQL查询方法
你可以将你已有的统计每个user_id出现次数的查询作为子查询,在外层再做一次分组统计即可,完整SQL语句如下:
SELECT `count`, COUNT(user_id) AS times_ocurring FROM ( -- 内层是你原本的统计逻辑,得到每个user_id的出现次数 SELECT user_id, COUNT(user_id) AS `count` FROM exp_pixel_data GROUP BY user_id ) AS user_count_tmp GROUP BY `count` -- 可选:按出现次数从小到大排序,方便结果阅读 ORDER BY `count` ASC;
逻辑说明:
- 内层子查询生成的临时表已经包含了所有user_id和各自的出现次数,别名为
count - 外层查询按照
count(即user_id的出现次数)分组,统计每一组内的user_id总数,就是对应出现次数下的user_id总数量,别名设置为你需要的times_ocurring - 因为
count是SQL的关键字,所以加了反引号包裹避免语法冲突,你也可以给内层的统计字段换成其他非关键字别名比如user_appear_times,就不用加反引号了。
内容的提问来源于stack exchange,提问作者Aleks
相关产品推荐
相关产品推荐

