有下面表CREATE TABLE EPMUSER.ZH_EMP
(
EMPLOYEE_ID NUMBER NOT NULL,
DEPT_NO CHAR(2 BYTE),
NAME VARCHAR2(20 BYTE),
SAL NUMBER
)
现要求每个部门薪水最高人的信息。
下面是我写的SQLSELECT A.EMPLOYEE_ID,
A.NAME,
A.DEPT_NO,
A.SAL
FROM ZH_EMP A,
(SELECT DEPT_NO,MAX(SAL) AS MAX_SAL
FROM ZH_EMP
GROUP BY DEPT_NO) B
WHERE A.DEPT_NO = B.DEPT_NO
AND A.SAL = B.MAX_SAL;
感觉比较复杂,有更好的方法吗?
谢谢~~
(
EMPLOYEE_ID NUMBER NOT NULL,
DEPT_NO CHAR(2 BYTE),
NAME VARCHAR2(20 BYTE),
SAL NUMBER
)
现要求每个部门薪水最高人的信息。
下面是我写的SQLSELECT A.EMPLOYEE_ID,
A.NAME,
A.DEPT_NO,
A.SAL
FROM ZH_EMP A,
(SELECT DEPT_NO,MAX(SAL) AS MAX_SAL
FROM ZH_EMP
GROUP BY DEPT_NO) B
WHERE A.DEPT_NO = B.DEPT_NO
AND A.SAL = B.MAX_SAL;
感觉比较复杂,有更好的方法吗?
谢谢~~
解决方案 »
- 为什么我system登录pl/sql developer,执行show user总是显示用户为sys呢
- 在线求救!使用imp导入表空间报ora-00001错误
- 横表转纵表问题
- 通过PL/SQL Developer 连接数据库好慢,请大家帮我看看,谢谢!
- 新手求助Oracle基础问题!跪求高人帮忙在线等
- RAC的简单物理部署问题
- 有关子查询的问题?如select * from (select * from a order by field1)的问题?
- oracle8i的OPS和9i RAC 有什么区别
- 一个概念问题
- oracle 查询语句咨询
- 关于ORACLE做HASH JOIN的问题
- 请Oracle高手帮忙解答一下几个数据库开发的问题,非常感谢。
SELECT EMPLOYEE_ID, NAME, DEPT_NO, SAL
FROM (SELECT A.*,
ROW_NUMBER() OVER(PARTITION BY A.DEPT_NO ORDER BY A.SAL) RN
FROM ZH_EMP A)
WHERE RN = 1
谢谢你的回答。
有2个问题。
1).......ROW_NUMBER() OVER(PARTITION BY A.DEPT_NO ORDER BY A.SAL DESC.......
2)如果有部门最高工资人有两个怎么办?
FROM (SELECT A.*,
max(sal) over(partition by dept_no) max_sal
FROM ZH_EMP A)
WHERE sal = max_sal