ホームページ >データベース >mysql チュートリアル >SQL を使用して各カテゴリから上位 10 件のレコードを取得するにはどうすればよいですか?
SQL を使用したカテゴリごとの上位 10 レコードの抽出
頻繁なデータベース操作には、単一の SQL クエリで各カテゴリから上位のエントリを取得することが含まれます。これは通常、ランキング関数とパーティショニングを組み合わせて使用して実現されます。 SQL を使用してこれを行う方法を検討してみましょう。「ビジネス」、「ローカル」、「機能」などのカテゴリを持つデータベースに焦点を当てます。
セクションごとの上位 10 レコードの SQL Server 2005 ソリューション
SQL Server 2005 では、次のクエリにより望ましい結果が得られます。
<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>
このクエリは、RANK()
関数を利用して、RankCriteria
列に基づいて、それぞれのセクション内の各レコードをランク付けします。 PARTITION BY
句はレコードを Section
で区切って、カテゴリごとに独立したランキングを保証します。
ランキングでの同点の処理
RANK()
はタイを効果的に処理しないことを理解することが重要です。 複数のレコードが同じ RankCriteria
値を共有する場合、それらは同じランクを受け取ります。これにより、同順位が存在する場合、セクションに対して 10 を超えるレコードが返される可能性があります。
これを軽減するには、代わりに ROW_NUMBER()
を使用することを検討してください。 ROW_NUMBER()
は、各パーティション内で一意の連続番号を割り当て、より正確な上位 10 位の選択を提供します。ただし、このアプローチは一部のシナリオで複雑さを増す可能性があります。
以上がSQL を使用して各カテゴリから上位 10 件のレコードを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。