基于已经给出的示例,我想问我进一步的问题。 MySQL: Count occurrences of distinct values
示例数据库
id name
----- ------
1 Mark
2 Mike
3 Paul
4 Mike
5 Mike
6 John
7 Mark
预期结果
name count
----- -----
Mark 2
Mike 3
Paul 1
Mike 3
Mike 3
John 1
Mark 2
我认为“ GROUP BY”没有帮助。 非常感谢。
答案 0 :(得分:0)
最简单的方法是在name
的分区上将Count()
用作Window Function;但是它们仅在MySQL 8.0.2 and onwards中可用。
但是,使用Derived Table可以使用另一种方法。在子选择查询(派生表)中,我们将识别每个唯一name
的计数。现在,我们只需要将其连接到主表即可显示每个名称的计数(而不是对它们进行分组):
SELECT
t1.name,
dt.total_count
FROM your_table AS t1
JOIN
(
SELECT name,
COUNT(*) AS total_count
FROM your_table
GROUP BY name
) AS dt ON dt.name = t1.name
ORDER BY t1.id
如果MySQL 8.0.2+可用,则解决方案将不再那么冗长:
SELECT
name,
COUNT(*) OVER (PARTITION BY name) AS total_count
FROM your_table