暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 工资最高,但总体工资最高的部门应该是最高/第一

askTom 2017-08-25
217

问题描述

工资最高的N个部门,但总体工资最高的部门应该是最高的,然后部门中第二高的部门 (排名1) 应该是下一个。
如何实现这个SQL查询?

以下是示例数据:
create table emp_sal_test ( dept# number ,
emp_name varchar2(200),
salary   number ) 
/

insert into emp_sal_test values ( 40 , 'Isha',80000);
insert into emp_sal_test values ( 40 , 'Pooja',70000);
insert into emp_sal_test values ( 40 , 'Geet',77000);
insert into emp_sal_test values ( 10 , 'Julie',75000);
insert into emp_sal_test values ( 10 , 'Jia',69000);
insert into emp_sal_test values ( 10 , 'Diya',72000);
insert into emp_sal_test values ( 20 , 'Sanvi',74000);
insert into emp_sal_test values ( 20 , 'Siya',65000);
insert into emp_sal_test values ( 20 , 'Seeta',81000);

The result of the query should be as following :
DEPT# EMP    SALARY 

20 Seeta 81000 
20 Sanvi 74000 
20 Siya 65000 

40 Isha 80000 
40      Geet    77000
40 Pooja 70000 

10 Julie 75000 
10 Diya 72000 
10 Jia 69000 
复制



谢谢
Anu


专家解答

首先,您需要找到每个部门的最高薪水。

你可以通过使用max() 的解析版本,按部门划分来找到这个。例如:

select e.*, max(salary) over (partition by e.dept#) dept_mx_sal 
from   emp_sal_test e;

DEPT#  EMP_NAME  SALARY  DEPT_MX_SAL  
10     Jia       69000   75000        
10     Diya      72000   75000        
10     Julie     75000   75000        
20     Sanvi     74000   81000        
20     Seeta     81000   81000        
20     Siya      65000   81000        
40     Geet      77000   80000        
40     Pooja     70000   80000        
40     Isha      80000   80000
复制


您现在需要做的就是按此降序排列,然后按工资顺序排列:

select e.*, max(salary) over (partition by e.dept#) dept_mx_sal 
from   emp_sal_test e
order  by dept_mx_sal desc, salary desc

DEPT#  EMP_NAME  SALARY  DEPT_MX_SAL  
20     Seeta     81000   81000        
20     Sanvi     74000   81000        
20     Siya      65000   81000        
40     Isha      80000   80000        
40     Geet      77000   80000        
40     Pooja     70000   80000        
10     Julie     75000   75000        
10     Diya      72000   75000        
10     Jia       69000   75000 
复制

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论