计算DISTINCT值的出现次数

问题描述 投票:217回答:3

我正在尝试找到一个MySQL查询,该查询将在特定字段中找到DISTINCT值,计算该值的出现次数,然后按该计数对结果进行排序。

示例数据库

id         name
-----      ------
1          Mark
2          Mike
3          Paul
4          Mike
5          Mike
6          John
7          Mark

预期结果

name       count
-----      -----
Mike       3
Mark       2
Paul       1
John       1
mysql sql database distinct
3个回答
390
投票
SELECT name,COUNT(*) as count 
FROM tablename 
GROUP BY name 
ORDER BY count DESC;

14
投票

类似这样的东西:

SELECT
  name,
  count(*) AS num
FROM
  your_table
GROUP BY
  name
ORDER BY
  count(*)
  DESC

您正在选择名称及其出现的次数,但是按名称分组,因此每个名称仅被选择一次。

最后,您按降序排列的次数排序,以使出现频率最高的用户排在首位。


6
投票

只需将琥珀色的COUNT(*)更改为COUNT(1)即可获得更好的性能。

SELECT name, COUNT(1) as count 
FROM tablename 
GROUP BY name 
ORDER BY count DESC;
© www.soinside.com 2019 - 2024. All rights reserved.