ホームページ >データベース >mysql チュートリアル >SQL を使用して各カテゴリから上位 10 件のレコードを取得するにはどうすればよいですか?

SQL を使用して各カテゴリから上位 10 件のレコードを取得するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-21 05:57:12945ブラウズ

How to Retrieve the Top 10 Records from Each Category Using SQL?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。