SQL で各グループの上位 2 行を取得する
SQL クエリを使用すると、ユーザーはテーブルから特定のデータを抽出できますが、必要な場合はどうすればよいですか各グループの上部 2 行を選択するには?このシナリオは、最高スコアのレコードを分析する場合、またはグループ内の複数の値を取得する場合に発生する可能性があります。
次の表を例として考えてみましょう。
NAME | SCORE |
---|---|
willy | 1 |
willy | 2 |
willy | 3 |
zoe | 4 |
zoe | 5 |
zoe | 6 |
各名前の最高 2 つのスコアを取得するには、次の SQL クエリを利用できます:
SELECT * FROM test s WHERE ( SELECT COUNT(*) FROM test f WHERE f.name = s.name AND f.score >= s.score ) <= 2
クエリの方法は次のとおりです。動作:
このクエリで期待される出力は次のとおりです:
NAME | SCORE |
---|---|
willy | 2 |
willy | 3 |
zoe | 5 |
zoe | 6 |
以上がSQLで各グループの上位2行を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。