2017-09-12 34 views
1

作爲一個SQL goofball,我完全通過嘗試執行最多2列計數而變得笨拙。MySQL工作臺計數的最大值

我有一個交易數據庫,我想獲得每個用戶的最高頻率收件人。

數據是:

User Recipient 
A  B 
A  C 
A  B 
A  F 
D  A 
D  C 
D  A 
D  A 

期望的結果是

User Recipient Count 
A  B  2 
D  A  3 

我設法得到計數,但我似乎無法得到最大收件人出來。

我試過使用內部聯接和where語句,但它失敗了。

如果有關係,顯示哪個值並不重要。

回答

2

在MySQL中獲得最大值有點痛苦。以下是一種方法:

select user, recipient, count(*) 
from t 
group by user, recipient 
having count(*) = (select count(*) 
        from t t2 
        where t2.user = t.user 
        group by user, recipient 
        order by count(*) desc 
        limit 1 
       ); 

注意:此版本將在有關係時返回重複項。如果你不想重複,你可以做:

select user, recipient, count(*) 
from t 
group by user, recipient 
having recipient = (select recipient 
        from t t2 
        where t2.user = t.user 
        group by user, recipient 
        order by count(*) desc 
        limit 1 
        ); 
+0

非常感謝:) –