由具有最高聚合值的ID表示的记录

时间:2016-02-05 12:32:09

标签: sql oracle greatest-n-per-group

我已经有代码显示ID的最高聚合值。

select max(fk3_job_role_id),max(sum(no_of_placements))
from fact_accounts
group by fk3_job_role_id

结果如下:

[max(fk3_job_role_id)] | [max(sum(no_of_placements))]
-----------------------|-----------------------------
5                      |                    25

但是,我想显示job_role_desc而不是由相同id表示的fk3_job_role_id。 它的表格如下:

[job_role_id] | [job_role_desc]
--------------------------------
1             |         job1
2             |         job2
3             |         job3
4             |         job4
5             |         job5

1 个答案:

答案 0 :(得分:-2)

select job_role_desc,T.total_sum from fact_accounts where job_role_id in (select max(fk3_job_role_id),max(sum(no_of_placements)) as total_sum from fact_accounts group by fk3_job_role_id) T

您需要使用子查询来查询作业说明。上述查询首先根据括号内的查询(通常也称为子查询)获取数据。从此查询返回的结果用于通过简单的“in”子句与主表中的所有其他id进行比较。

  

编辑

如果您还需要放置的总和,您可以通过使用对子查询执行期间创建的表的引用来获取它;