SQL如何统计字段值出现次数并按次数降序取前3条结果
错误原因
你写的SQL存在两个核心问题:
- 仅用
DISTINCT没有搭配GROUP BY分组,COUNT(name)会统计全表的总记录数,而非每个name的出现次数 - 表名书写错误:你实际的表名为
places,SQL里写的是place
正确SQL语句
SELECT name, COUNT(*) AS occurrence_count FROM places GROUP BY name ORDER BY occurrence_count DESC LIMIT 3;
逻辑说明
- 用
GROUP BY name对相同name的记录自动分组,天然返回去重后的name值,无需额外加DISTINCT COUNT(*)统计每个分组内的记录数,即对应name的出现次数- 按统计得到的出现次数降序排序,最后用
LIMIT 3截取前三条结果,和你期望的输出完全匹配
内容的提问来源于stack exchange,提问作者JAT86
相关产品推荐
相关产品推荐

