ホームページ >データベース >mysql チュートリアル >Oracle でサブクエリなしでグループごとの上位 N 件の結果を取得するにはどうすればよいですか?
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 サイトの他の関連記事を参照してください。