首页 > 数据库 > mysql教程 > 如何在没有子查询的情况下获取 Oracle 中每组的前 N ​​个结果?

如何在没有子查询的情况下获取 Oracle 中每组的前 N ​​个结果?

DDD
发布: 2025-01-19 15:01:38
原创
209 人浏览过

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 名),而不使用子查询。

解决方案:

<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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板