SQL で複数のカテゴリから上位 N レコードを取得する
この SQL 手法は、単一のテーブル内のさまざまなカテゴリから上位 N 件のレコード (上位 10 件など) を効率的に取得します。
<code class="language-sql">SELECT rs.Field1, rs.Field2 FROM ( SELECT Field1, Field2, RANK() OVER (PARTITION BY Section ORDER BY RankCriteria DESC) AS Rank FROM table ) rs WHERE Rank <= 10;</code>
説明:
Field1
および Field2
: これらは取得する列を表します。SELECT
ステートメントは RANK()
ウィンドウ関数を使用します。 PARTITION BY Section
は、「セクション」カテゴリに基づいてデータをグループに分割します。 ORDER BY RankCriteria DESC
は、各セクション内のレコードをランキング基準に従って降順に並べ替えます。 Rank
は、そのセクション内の各レコードにランクを割り当てます。SELECT
ステートメントは結果をフィルターし、Rank
値が 10 以下 (Rank <= 10
) のレコードのみを保持します。この方法は効率的であり、専用の行制限機能がないデータベース システムでも機能します。 パフォーマンスが重要な場合に最適です。
以上がSQL で複数のカテゴリにわたる上位 N レコードを効率的にクエリする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。