为了账号安全,请及时绑定邮箱和手机立即绑定

获得每个组的最佳结果(在Oracle中)

获得每个组的最佳结果(在Oracle中)

获得每个组的最佳结果(在Oracle中)如何在oracle查询中获得几个组的N个结果。例如,给出下表:|--------+------------+------------|| emp_id | name       | occupation ||--------+------------+------------||      1 | John Smith | Accountant ||      2 | Jane Doe   | Engineer   ||      3 | Jack Black | Funnyman   ||--------+------------+------------|还有更多行占用更多。我想从每个职业中找到三名员工(比方说)。有没有办法在不使用子查询的情况下执行此操作?
查看完整描述

3 回答

?
慕姐8265434

TA贡献1813条经验 获得超2个赞

这产生了你想要的东西,它没有使用特定于供应商的SQL功能,如TOP N或RANK()。

SELECT MAX(e.name) AS name, MAX(e.occupation) AS occupation 
FROM emp e 
  LEFT OUTER JOIN emp e2 
    ON (e.occupation = e2.occupation AND e.emp_id <= e2.emp_id) GROUP BY e.emp_id 
HAVING COUNT(*) <= 3 ORDER BY occupation;

在此示例中,它为三个员工提供每个职业的最低emp_id值。您可以更改不等式比较中使用的属性,使其按名称或其他方式为最高员工提供。


查看完整回答
反对 回复 2019-08-28
  • 3 回答
  • 0 关注
  • 599 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信