[求助]这种查询该怎么写啊??
create table emp (<br>id number,<br>dept_id number,<br>salary number<br>);<br><br>id dept_id salary<br>1 1 1300<br>2 1 1200<br>3 1 1000<br>4 1 1100<br>5 2 1500 <br>6 2 1300<br>7 2 1600<br>8 2 1300<br>9 2 1100<br>查询每个部门的前3甲工资,查询后:<br>id dept_id salary<br>1 1 1300<br>2 1 1200<br>4 1 1100<br>7 2 1600<br>5 2 1500<br>6 2 1300<br>8 2 1300<br>工资重复的话都要显示,部门数不止1,2,要通用,谢谢,我想了一下午了,还是想不出[align=right][color=#000066][此贴子已经被作者于2007-4-20 21:45:43编辑过][/color][/align]
<P>顶</P>
[align=right][color=#000066][此贴子已经被作者于2007-4-20 22:22:39编辑过][/color][/align]
select id,dept_id,salary,rank() over(partition by dept_id order by salary desc) rank from emp select id,dept_id,salary,row_number() over(partition by dept_id order by salary desc)as rank from emp 希望这个能用在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<t2.salary)<=2
试试这个
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 DESC
刚开始学.我也就看你的问题打的.不知道对不
select * from emp e1where (
select coun(*) from emp e2 where e2.salary>e1.salary
)<=3;
页:
[1]
