选择按频率排序的最重要的不同结果
Posted
技术标签:
【中文标题】选择按频率排序的最重要的不同结果【英文标题】:Select top distinct results ordered by frequency 【发布时间】:2010-11-16 01:52:32 【问题描述】:我的表有两列: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。
谢谢。
【问题讨论】:
【参考方案1】:我还没有测试过,所以语法可能不完美,但是像这样的东西呢:
select name, count(*) as frequency
from your_table
group by name
order by count(*) desc
应该为您提供唯一的名称以及每个名称在表格中出现的相应次数,按该数字排序。
【讨论】:
只是一点点添加顺序子句也可能像“order by frequency desc”【参考方案2】:您需要使用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 手册:
12.2.8 SELECT Syntax
【讨论】:
谢谢你,安德鲁。你真好。以上是关于选择按频率排序的最重要的不同结果的主要内容,如果未能解决你的问题,请参考以下文章