网站首页  |  业界新闻  |  技术文章  |  视频教程  |  下载频道  |  程序源码  |  个人空间  |  编程论坛
 
学习型 ASP/PHP/ASP.NET 主机 30元/年 全能 ASP/PHP/ASP.NET 主机,支持月付 专业 MSSQL 数据库空间,支持月付 专业 MySQL 数据库空间,支持月付
发新话题
打印

[求助]这种查询该怎么写啊??

[求助]这种查询该怎么写啊??

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,要通用,谢谢,我想了一下午了,还是想不出

[此贴子已经被作者于2007-4-20 21:45:43编辑过]

TOP

[此贴子已经被作者于2007-4-20 22:22:39编辑过]

26403021 sql群 博客 blog.bc-cn.net/user15/81152/index.shtml

TOP

select id,dept_id,salary,rank() over(partition by dept_id order by salary desc) rank from emp

TOP

select id,dept_id,salary,row_number() over(partition by dept_id order by salary desc)as rank from emp

TOP

希望这个能用在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

TOP

试试这个

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

TOP

发新话题