「トップ 3 スコア」リーダーボードを作成しています。上位 3 つのスコアを表示して、1 人あたりの最大値を描画したいのですが、上位 3 つのスコアを持つ人を表示したいので、3 に制限したくありません。たとえば、以下のデータでは、
+----+-----+
|Name|Score|
+----+-----+
|Matt| 17|
|Mark| 29|
|Luke| 28|
|John| 29|
|Paul| 27|
|Matt| 29|
|Mark| 22|
+----+-----+
表示したい:
+------+-----+
|Name |Score|
+------+-----+
|1.Matt| 30|
|2.Mark| 29|
|2.John| 29|
|3.Luke| 28|
+------+-----+
私の最初の考えは、全員の最大値を抽出し、スコアが変更された後に表示を停止することです (PHP を使用)。
select name, max(score)
from SCORES
group by name
order by name
これをSQLで直接行う方法はありますか?