
mysql sql 求解特定分组
问题:
如何使用 group by 语句对数据集进行分类,找出满足特定条件的分组?
问题详解:
给定一张表 tb,其中包含 user_id 列。需要找到 user_id 在表中出现次数大于 2 的分组。
答案:
select user_id from tb group by user_id having(count(1)) > 2;
解释:
- group by user_id 将数据集按 user_id 列进行分组。
- having(count(1)) > 2 表示只选择分组中的记录数大于 2 的分组。
- count(1) 计数每组中的记录数。
优化建议:
- 在 user_id 列上创建索引以提高查询性能。
此外,如果只想统计分组中的记录数,可以使用以下查询:
select count(1) from ( select user_id from tb group by user_id having(count(1)) > 2 );










