问答中心分类: MYSQL计算 DISTINCT 值的出现次数
0
匿名用户 提问 51分钟 前

我试图找到一个 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
2 Answers
0
Pascal MARTIN 回答 51分钟 前

像这样的东西怎么样:

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

您正在选择名称及其出现的次数,但按名称分组,因此每个名称仅选择一次。
最后,您按 DESCending 顺序按次数排序,以使出现频率最高的用户排在第一位。

Nav 回复 51分钟 前

你的查询帮助了我。它返回几行作为结果。我也想知道如何找到这个结果的计数。尝试了一些查询,但似乎无法对聚合进行计数。你能帮忙吗?

Autumn Leonard 回复 51分钟 前

@Nav – 数什么?返回的行数?那是SELECT COUNT(DISTINCT name) as count FROM your_table要计算表的总行数,请执行不带group by陈述。

Leo the lion 回复 51分钟 前

@AutumnLeonardthanx 人。我从您的评论中得到了答案,然后是答案.. 🙂

0
aerin 回答 51分钟 前

只需将 Amber 的 COUNT(*) 更改为 COUNT(1) 以获得更好的性能。

SELECT name, COUNT(1) as count 
FROM tablename 
GROUP BY name 
ORDER BY count DESC;
James 回复 51分钟 前

其实你说的是片面的这里