2016-04-29 233 views
1

我想要一个SQL查询来获取每个部门Oracle查询来获取每个部门

Table :- sample 

Name Salary Dept 
AA  1000 Hr 
BB  7520 Store 
CC  12500 Hr 
DD  9850 Store 
EE  10250 Finance 
FF  12560 Hr 
GG  13500 Store 
HH  15680 Store 
KK  12853 Hr 
MM  17582 Finance 
NN  16852 Finance 

我用下面的查询的前3名薪酬最高3的工资,但它不是获取正确的结果

SELECT dept, fname,lname,sal from sample where rownum<4 group by(fname,lname,sal,desg) order by sal desc 

回答

0

尝试group by然后where rownum < 4

SELECT dept,fname,lname,sal 
FROM sample 
GROUP BY(fname,lname,sal,desg) 
WHERE ROWNUM < 4 
ORDER BY sal DESC 
; 

还要检查SELECTGROUP BY列作为只显示NAME的表格,而不是fnamelname

+0

嗨,上面的查询还没有获取期望的结果使用的名称 – suvendu

+0

HV,但不获取所需esult – suvendu

+0

尝试以下范X解决方案。 –

2

你需要的是解析函数row_number

select * 
from (select a.*, row_number() over (PARTITION by dept order by salary desc) as num 
     from sample a 
) 
where num < 4;