2017-09-12 16 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で最大限になることは苦痛です。 1つの方法は次のとおりです。

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

ありがとうございます:) –