簡體   English   中英

MySQL:計算每行不同值的出現次數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM