当前位置:数据库 > Oracle >>

一员工表,有字段 工资和部门,展示每个部门工资排名前三位的员工信息 sql怎么写 数据库是oracle

不要写。。。where 部门='...' union 。。。where 部门='...'.........
追问:select first_name,salary,部门 from 员工表 GROUP BY 部门
order by salary desc
这句就不对哎,查询条件必须出现在group by后面的,对吧这条group by没起作用,查出来的是所有员工的前三,我要查每个部门的前三
答案:select tt.部门,tt.工资,tt.rn from 
(select t.部门,t.工资,row_number() over(partition by 部门 order by 工资 desc) rn from tab1 t)
where tt.rn<=3;
其他:select 员工姓名,工资,部门 
from (select first_name,salary,部门 from 员工表 GROUP BY 部门
order by salary desc)t
where rownum<=3 select a.* from (select  员工姓名,工资,部门 from dept group by 员工姓名,工资,部门 order by 工资desc)a  where rownum<=3; 

上一个:oracle 如何调用 sybase 的数据
下一个:oracle 如何恢复删除的视图呢?不知道能不能找到呢?

Oracle
MySQL
Access
SQLServer
DB2
Excel
SQLite
SYBASE
Postgres
如果你遇到数据库难题:
请访问www.zzzyk.com 试试
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,