ホームページ > データベース > mysql チュートリアル > SQL で各グループの上位 N 行を選択するにはどうすればよいですか?

SQL で各グループの上位 N 行を選択するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-31 08:42:10
オリジナル
717 人が閲覧しました

How to Select the Top N Rows for Each Group in SQL?

SQL の各グループの上位 N 行

SQL では、ウィンドウ関数を使用して各グループの上位行を選択できます。ウィンドウ関数を使用すると、指定した順序とパーティションによって定義されるウィンドウと呼ばれる行のセットに対して計算を実行できます。この場合、各グループの上位 2 行を選択します。これは、次の手順を使用して実現できます:

  1. データを分割します: 対象となるグループを定義します。 PARTITION BY 句を使用して先頭の行を選択したいと考えています。この例では、NAME 列によってデータをグループ化します。
  2. 各グループ内の行をランク付けします。 ROW_NUMBER() ウィンドウ関数を使用して、グループ内の各行に連続番号を割り当てます。各グループは 1 から始まります。これにより、そのグループ内の各行のランクがわかります。
  3. 上位をフィルタリングしますrows: フィルタを適用して、ランク 1 または 2 の行のみを選択します。これにより、各グループの上位 2 行が得られます。

これらを実装するクエリの例を次に示します。ステップ:

SELECT *
FROM (
    SELECT *, RANK() OVER (PARTITION BY NAME ORDER BY SCORE DESC) AS row_rank
    FROM test
) AS ranked
WHERE row_rank <= 2
ログイン後にコピー

このクエリは、以下に示すように、目的の出力を生成します:

NAME    SCORE
-----------------
willy       2
willy       3
zoe         5
zoe         6
ログイン後にコピー

以上がSQL で各グループの上位 N 行を選択するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート