我的表有两列:id和name。数据如下所示:
id | name
----------
1 Jeff
2 Sam
3 Carl
4 Sam
5 Carl
6 Jeff
7 Dave
8 Jeff
我想要获得的是:
name | frequency
----------------
Jeff 3
Carl 2
Sam 2
Dave 1
基本上,我需要一个SQL查询来计算表中的唯一名称,并根据它们的频率对它们进行排序。如果重要,我正在使用MySQL。
感谢-你。
答案 0 :(得分:28)
我还没有测试过,所以语法可能不完美,但是这样的事情呢:
select name, count(*) as frequency
from your_table
group by name
order by count(*) desc
应该为您提供唯一的名称以及它们在表格中出现的相应时间,按该号码排序
答案 1 :(得分:16)
您需要使用GROUP BY
:
SELECT name, COUNT(*) as frequency
FROM name_table
GROUP BY name
ORDER BY COUNT(*) DESC;
这将GROUP BY
name
(任何非汇总列需要在GROUP BY
子句中命名),然后COUNT
每个name
的频率
如果您只想要前25名,那么您可以继续添加LIMIT
条款:
SELECT name, COUNT(*) as frequency
FROM name_table
GROUP BY name
ORDER BY COUNT(*) DESC
LIMIT 25;
有关GROUP BY
子句的更多信息,请参阅MySQL手册: