私はこのテーブルを持っています:
id game points player
---|-----|-------|--------
1 | 1 | 6 | John
2 | 1 | 5 | Adam
3 | 1 | 7 | Brian
4 | 1 | 8 | Alan
5 | 2 | 6 | John
6 | 2 | 2 | Adam
7 | 2 | 4 | Brian
8 | 2 | 3 | Alan
人が獲得した金、銀、銅メダルの数をカウントするクエリを作成しようとしています。
アランの結果は次のようになります: ( [ゴールド] = 1, [シルバー] = 0, [ブロンズ] = 1 )
ブライアンは次のようになります: ( [ゴールド] = 0, [シルバー] = 2, [ブロンズ] = 0 )
私はこのように金メダルを数えることができました:
SELECT COUNT(*) AS gold
FROM (`myTable` AS t)
WHERE `t`.`player` = 'Alan'
AND `t`.points = (
SELECT MAX(`points`)
FROM `myTable` as tsub
WHERE `tsub`.`game` = `t`.`game`
)
銀メダルと銅メダルはもっと難しいようです。
誰にもアイデアはありますか?
ありがとう
編集: メダルの授与方法を明確にするため。
ゴールド: ゲームで最も高いスコアを持つプレイヤーに贈られます。
シルバー: ゲームで 2 番目に高いスコアを持つプレイヤーに与えられます。
ブロンズ: ゲームで 3 番目に高いスコアを持つプレイヤーに与えられます。
複数のゲームがテーブルに格納されます。
2 人のプレーヤーが金メダルを獲得した場合、銀メダルは授与されません。2 つの最高得点が同点だったため、次に高い得点が 3 番目に高い得点となり、銅メダルが授与されます。