2017-08-14 10 views
-3

トーナメントにチーム名とチーム数を表示するクエリを作成します。いずれかのチームがいずれかのゲームに勝利しなかった場合は、win_countを0として表示します。勝利回数にエイリアス名を 'win_count'として与えます。チーム名に基づいて昇順でソートされたレコードを表示します。SQLでの条件付きカウントを使用

私はこのクエリを試してみましたが、それは

select 
    t.name, count(case when o.status='WIN' then true else '0') as win_count 
from 
    team t 
inner join 
    outcome o on t.id = o.winner_team_id 
group by 
    t.name 
order by 
    t.name asc 

サンプル・データを働いていない:

TEAM

ID NAME  
    ----------------- 
    1 BENGAL 
    2 BENGALURU 
    3 DELHI 
    4 JAIPUR 
    5 PATNA 
    6 PUNE  
    7 PUNJAB 
    8 KOLKATA 

がアウトカム

ID STATUS WINNER_TEAM_ID 
    --------------------------- 
    1 WIN  2 
    2 WIN  4 
    3 WIN  5 
    4 WIN  7 
    5 CANCELLED NULL 
    6 WIN  4 
    7 WIN  8 
    8 WIN  7 
    9 WIN  8 
    10 WIN  7 
    11 WIN  2 
    12 WIN  1 
    13 WIN  4 
    14 WIN  2 
    15 WIN  5 
    16 WIN  5 
    17 WIN  8 
    18 WIN  7 
    19 WIN  4 
    20 WIN  3 
    21 WIN  4 
    22 WIN  2 
+0

3つではなくDBMSを選択します。 – Siyual

+3

ヒント: 'group by' –

+1

sum(o.Status = 'WIN'、次に1 else 0 end) –

答えて

0

これは、で簡単にグループで行われます。

SELECT t.Name, COUNT(o.ID) AS WIN_COUNT 
FROM Team t 
LEFT JOIN Outcome o ON o.Winner_Team_ID = t.ID 
GROUP BY t.ID 
ORDER BY t.Name; 
+0

OPのLEFT JOINが必要です。 –

+0

あなたはそうだ、忘れてしまった – wvdz

+0

私は左にも参加しようとしましたが、まだ問題があります –