最近のインタビューの1つからこの問題に遭遇しました。マッチに基づいてチームをランク付けするSQL
2つのテーブル
create table teams {
team_id,
team_name
};
create table matches {
match_id,
host_team,
guest_team,
host_goals,
guest_goals
};
採点ルールは以下のとおりです。勝利= 3ポイント= 1ポイントを描き、= 0の点を失います。
すべてのチームの得点に基づいてランク付けするSQLクエリを作成するにはどうすればよいですか?例えば
team_id | team_name
---------+---------------
10 | A
20 | B
30 | C
40 | D
50 | E
試合
match_id | host_team | guest_team | host_goals | guest_goals
----------+-----------+------------+------------+-------------
1 | 30 | 20 | 1 | 0
2 | 10 | 20 | 1 | 2
3 | 20 | 50 | 2 | 2
4 | 10 | 30 | 1 | 0
5 | 30 | 50 | 0 | 1
問い合わせは(あなたがUNION
を使用しなければならないことに注意していないしてください、私はこのように、UNION
でこれを行うだろう
team_id | team_name | num_points
---------+-----------+------------
20 | B | 4
50 | E | 4
10 | A | 3
30 | C | 3
40 | D | 0
何か試してみる必要がありますか? –
@ GordonLinoff SQLは私の強い訴訟ではなく、私はこの質問のためにインタビューにほとんど失敗したと確信しています。ちょうどいくつかのアイデアを得たかった。 – ddd
サンプル入力データと期待される結果を表示することができます – Saif