ホームページ >データベース >mysql チュートリアル >Oracle でサブクエリなしでグループごとの上位 N 件の結果を取得するにはどうすればよいですか?

Oracle でサブクエリなしでグループごとの上位 N 件の結果を取得するにはどうすればよいですか?

DDD
DDDオリジナル
2025-01-19 15:01:38208ブラウズ

How to Get the Top N Results per Group in Oracle Without Subqueries?

Oracle データベース内の各グループの上位の結果を取得

質問:

サブクエリを使用せずに、Oracle データベース内の各グループの上位 N 件の結果を取得します。

例:

従業員情報を含む指定されたテーブルについて考えます:

emp_id name occupation
1 John Smith Accountant
2 Jane Doe Engineer
3 Jack Black Funnyman

目標は、サブクエリを使用せずに各職業から 3 人の従業員 (上位 3 人) を取得することです。

解決策:

<code class="language-sql">select *
from (select emp_id, name, occupation,
      rank() over (partition by occupation order by emp_id) as rank
      from employee)
where rank <= 3;</code>

手順:

rank() 関数は、各従業員にそれぞれの職種内でランキングを割り当てるために使用されます。 partition by occupation 句により、各職業が個別にランク付けされるようになります。

rank <= 3 この条件は、各職業のランクが 3 以下の従業員を除外します。

追加情報:

rank() 関数の詳細については、次のリソースを参照してください: https://www.php.cn/link/56138186020206c2b1d99be41c8dc9b8

以上がOracle でサブクエリなしでグループごとの上位 N 件の結果を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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