SQLで各グループの上位2行を選択する方法 質問する

SQLで各グループの上位2行を選択する方法 質問する

次のような表があります:

NAME    SCORE
-----------------
willy       1
willy       2
willy       3
zoe         4
zoe         5
zoe         6

これがサンプル

の集計関数では、group by各 の最高スコアのみを取得できますname。各 の最高 2 つのスコアを取得するクエリを作成したいのですがname、どうすればよいですか?

私の期待する出力は

NAME    SCORE
-----------------
willy       2
willy       3
zoe         5
zoe         6

ベストアンサー1

SELECT *
FROM   test s
WHERE 
        (
            SELECT  COUNT(*) 
            FROM    test  f
            WHERE f.name = s.name AND 
                  f.score >= s.score
        ) <= 2

おすすめ記事