在 Oracle 数据库中获取每个组的顶级结果
问题:
在不使用子查询的情况下,获取 Oracle 数据库中每个组的前 N 个结果。
示例:
考虑包含员工信息的给定表:
emp_id | name | occupation |
---|---|---|
1 | John Smith | Accountant |
2 | Jane Doe | Engineer |
3 | Jack Black | Funnyman |
目标是从每个职业中检索三名员工(前 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中文网其他相关文章!