MySQL分组统计:如何统计对应购买次数下的用户人数
实现方案
你当前的语句已经完成了第一步统计每个用户的购买次数,只需要在此基础上套一层外层分组统计即可,完整查询语句如下:
SELECT noOfSales, COUNT(*) AS Num FROM ( SELECT COUNT(ID) AS noOfSales FROM Sales GROUP BY `User ID` ) AS user_purchase_cnt GROUP BY noOfSales ORDER BY noOfSales;
逻辑说明
- 内层子查询和你现有写法逻辑一致,按用户ID分组,统计得到每个用户的总购买次数,对应你给出的示例数据会返回
3、1、2三条结果 - 外层查询对内层返回的购买次数做二次分组,统计每个购买次数对应的用户数量,即可得到你需要的输出结果
性能说明
数千条记录的场景下该查询运行效率很高,无需额外优化即可秒出结果。如果后续数据量上涨,可以给Sales表的User ID字段添加普通索引,加快内层分组统计的速度。
内容的提问来源于stack exchange,提问作者eeh_1uk
相关产品推荐
相关产品推荐

