Oracle分组查询

group by ... having ... order by ...

1、查询每个岗位的总工资并且不包括'SALESMAN'岗位而且工资和大于5000

SELECT JOB, SUM(SAL) SU
  FROM EMP
 WHERE JOB <> 'SALESMAN'
 GROUP BY JOB
HAVING SUM(SAL) > 5000
 ORDER BY SU DESC;

2、要求查询出:部门名称,部门的员工数,部门的平均工资,部门的最低收入员工的姓名和最高收入员工的姓名

SELECT DEPT.DNAME AS 部门名称,
       TEMP.C     AS 人数,
       TEMP.A     AS 平均工资,
       TEMP.M     AS 最低工资,
       TEMP.MS    AS 最高工资,
       E.ENAME    AS 最低工资人,
       DD.ENAME   AS 最高工资人
  FROM (SELECT DEPTNO, COUNT(*) C, AVG(SAL) A, MIN(SAL) M, MAX(SAL) MS
          FROM EMP
         GROUP BY DEPTNO) TEMP,
       DEPT,
       EMP E,
       EMP DD
 WHERE TEMP.DEPTNO = DEPT.DEPTNO
   AND E.SAL = TEMP.M
   AND E.DEPTNO = TEMP.DEPTNO
   AND DD.SAL = TEMP.MS
   AND DD.DEPTNO = TEMP.DEPTNO
 ORDER BY 1;

转载于:https://www.cnblogs.com/nuaa/p/3691635.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值