2016-10-25 6 views
0

私は次のようなテーブルを持っています。様々なプレイヤーのための値、およびウォーキャスター付き複数の列から最も頻繁に選択する

ID | Winner | Loser | WinningCaster | LosingCaster 
0 | Player A | Player B | Warcaster A | Warcaster B 
1 | Player A | Player B | Warcaster C | Warcaster A 
2 | Player C | Player D | Warcaster A | Warcaster B 

など。

。 WinningCaster/LosingCasterは有名な名前リストです。特定のプレーヤーエントリの有無にかかわらず、どちらの名前が最も頻繁に表示されるかを両方の列で検出するクエリを作成したいと思います。 IE Player Aは2でWarcasterAを返すべきであり、全体的なクエリはWarcasterAを3と返します。

これまでのところ、私はどちらのカラムからも最も頻繁に得られました。

SELECT 
    ID, Winner, Loser, CasterWinner, Count(CasterWinner) AS Occ 
FROM 
    `Games` 
GROUP BY 
    CasterWinner 
ORDER BY 
    Occ DESC 
LIMIT 1 
+1

クエリで持っている列名を使用すると、テーブルに持っている名前と一致していないので、あなたがしようとしているコラムを参照して少し混乱していますグループ化する。勝利キャスターと失っているキャスターコラムのすべてを組合にして試してみて、その上でクエリを使ってグループを書くことができます。 – Neeraj

答えて

0

使用union all

select caster, count(*) 
from ((select casterwinner as caster from games 
    ) union all 
     (select casterloser from games 
    ) 
    ) c 
group by caster 
order by count(*) desc 
limit 1; 
+0

それは、ありがとう、ありがとう。 – DataThrust

関連する問題