标题:[求助]这种查询该怎么写啊??
只看楼主
以后每天来这里
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2006-9-6
 问题点数:0 回复次数:8 
[求助]这种查询该怎么写啊??
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编辑过]

搜索更多相关主题的帖子: 工资 salary number dept emp 
2007-04-20 21:45
棉花糖ONE
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:32
帖 子:2987
专家分:0
注 册:2006-7-13
得分:0 

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


26403021 sql群 博客 blog./user15/81152/index.shtml
2007-04-20 22:18
liuye
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2007-10-18
得分:0 
select id,dept_id,salary,rank() over(partition by dept_id order by salary desc) rank from emp
2007-10-24 22:51
fengyiyang
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-10-20
得分:0 
select id,dept_id,salary,row_number() over(partition by dept_id order by salary desc)as rank from emp
2008-03-30 23:02
makebest
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:658
专家分:962
注 册:2005-3-17
得分:0 
希望这个能用在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
2008-04-27 22:06
zhaoyandyx
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2008-5-8
得分:0 
试试这个
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
2008-05-08 10:47
muzhoyto
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-8-28
得分:0 
只有makebest的正确
2008-08-28 12:56



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-133587-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.053505 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved