[英]MySQL: Count occurrences of distinct values for each row
基於已經給出的例子,我想問我進一步的問題。 MySQL:計算不同值的出現次數
示例數據庫
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' 沒有幫助。 非常感謝。
最簡單的方法是在name
的分區上使用Count()
作為窗口函數; 但它們僅在MySQL 8.0.2 及更高版本中可用。
但是,使用派生表的另一種方法是可能的。 在子選擇查詢(派生表)中,我們將識別每個唯一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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.