以后每天来这里 发布留言 2007-4-20 21:45
[求助]这种查询该怎么写啊??
create table emp (
id number,
dept_id number,
salary number
);
id dept_id salary
1 1 1300
2 1 1200
3 1 1000
4 1 1100
5 2 1500
6 2 1300
7 2 1600
8 2 1300
9 2 1100
查询每个部门的前3甲工资,查询后:
id dept_id salary
1 1 1300
2 1 1200
4 1 1100
7 2 1600
5 2 1500
6 2 1300
8 2 1300
工资重复的话都要显示,部门数不止1,2,要通用,谢谢,我想了一下午了,还是想不出
棉花糖ONE 发布留言 2007-4-20 22:18
顶
liuye 发布留言 2007-10-24 22:51
select id,dept_id,salary,rank() over(partition by dept_id order by salary desc) rank from emp
fengyiyang 发布留言 2008-3-30 23:02
select id,dept_id,salary,row_number() over(partition by dept_id order by salary desc)as rank from emp
makebest 发布留言 2008-4-27 22:06
希望这个能用在ORACLE中,在SQLSERVER中测试通过
select id,dept_id,salary from emp t1
where (select count(*) as rk from emp t2 where t1.dept_id=t2.dept_id and t1.salary
zhaoyandyx 发布留言 2008-5-8 10:47试试这个
SELECT * FROM (
SELECT id dept_id salary, DENSE_RANK()
OVER (
PARTITION BY dept_id ORDER BY salary DESC
) Top3 FROM emp
)
WHERE Top3 <= 3
ORDER BY id ,dept_id, salary DESCwysq 发布留言 2008-6-11 22:19
刚开始学.我也就看你的问题打的.不知道对不
select * from emp e1
where (
select coun(*) from emp e2 where e2.salary>e1.salary
)<=3;
页: [1]