0

私は単純なスキーマを持つテーブルを持っています:user_idで、それぞれが 1 回だけ表されるscoreように、スコアが最も高い n 個のレコードを抽出したいと考えています。user_id

この質問は、グループ化された結果の各グループの上位 n レコードを取得するに似ていますが、グループごとに n 人の代表者が必要な代わりに、テーブルの n 人の代表者が必要で、グループごとに最大 1 つのレコードが必要です。

そのため、n=3 を探している場合は、次のクエリを実行します。

user_id | score
      1 |    10
      2 |     9
      1 |    11
      2 |     8
      3 |     8
      4 |    12

次の結果が得られます。

user_id | score
      4 |     12
      1 |     11
      2 |      9
4

1 に答える 1

2
SELECT user_id, MAX(score) FROM table GROUP BY user_id ORDER BY MAX(score) DESC LIMIT 3;
于 2013-06-28T03:56:37.350 に答える