zoukankan      html  css  js  c++  java
  • Oracle 子查询和组函数练习

    SELECT * FROM emp;

    SELECT * FROM dept;

    1、查询公司员工工资的最大值,最小值,平均值和总和。

    SELECT MAX(sal) AS 工资最大值, MIN(sal) AS 工资最小值
        , AVG(sal) AS 工资平均值, SUM(sal) AS 工资总和
    FROM emp;
    

    2、查询各 job 的员工工资的最大值,最小值,平均值和总和。

    SELECT job, MAX(sal), MIN(sal)
        , AVG(sal), SUM(sal)
    FROM emp
    GROUP BY job;
    

    3、选择具有各个 job 的员工人数

    SELECT job, COUNT(job) AS 人数
    FROM emp
    GROUP BY job;
    

    4、显示平均工资 >2000 的职位

    SELECT job
    FROM emp
    GROUP BY job
    HAVING AVG(sal) > 2000;
    

    5、计算工资在 2000 以上,各种职位的平均工资大于 3000 的职位及平均工资。

    SELECT job, AVG(sal)
    FROM emp
    WHERE sal > 2000
    GROUP BY job
    HAVING AVG(sal) > 3000;
    

    6、找出每个部门的最高和最低工资

    SELECT deptno, MAX(sal) AS 最高工资, MIN(sal) AS 最低工资
    FROM emp
    GROUP BY deptno;
    

    7、显示出工作名称 (job) 中包含"MAN"的员工的平均工资,最高工资,最低工资及工资的和。

    SELECT AVG(sal) AS 平均工资, MAX(sal) AS 最大工资
        , MIN(sal) AS 最小工资, SUM(sal) AS 工资总和
    FROM emp
    WHERE job LIKE '%MAN%';
    

    8、显示出 20 号部门的员工人数

    SELECT deptno, COUNT(empno) AS 员工人数
    FROM emp
    WHERE deptno = 20
    GROUP BY deptno;
    

    9、列出从事“SALES”(销售)工作的雇员的姓名,假定不知道销售部的部门编号。

    SELECT ename AS 雇员姓名
    FROM emp
    WHERE deptno = (
        SELECT deptno
        FROM dept
        WHERE dname = 'SALES'
    );
    

    10、列出薪金高于公司平均水平的所有雇员

    SELECT *
    FROM emp
    WHERE sal > (
        SELECT AVG(sal)
        FROM emp
    );
    

    11.查询与“SCOTT”在同一个部门的员工

    SELECT *
    FROM emp
    WHERE deptno = (
        SELECT deptno
        FROM emp
        WHERE ename = 'SCOTT'
    );
    

    12.查找不在销售部 (SALES) 和财务部 (ACCOUNTING) 工作的雇员编号、姓名和部门编号。

    SELECT empno, ename, deptno
    FROM emp
    WHERE deptno NOT IN (
        SELECT deptno
        FROM dept
        WHERE dname = 'ACCOUNTING'
            OR dname = 'SALES'
    );
    

    13.在 EMP 表中,找出每个超过他所在部门平均工资的员工编号,员工名称,薪水和部门编号。

    SELECT empno, ename, sal, e2.deptno
    FROM emp e1, (
            SELECT deptno, AVG(sal) AS avgsal
            FROM emp
            GROUP BY deptno
        ) e2
    WHERE e1.deptno = e2.deptno
        AND sal > avgsal;
    

    14、列出某些雇员的姓名和薪金,条件是他们的薪金等于部门 30 中任何一个雇员的薪金。

    SELECT ename, sal
    FROM emp
    WHERE sal = ANY (
        SELECT sal
        FROM emp
        WHERE deptno = 30
    );
    
    SELECT ename, sal
    FROM emp
    WHERE sal IN (
        SELECT sal
        FROM emp
        WHERE deptno = 30
    );
    

    15、列出各个部门 MANAGER(经理)的最低薪金

    SELECT deptno, MIN(sal)
    FROM emp
    WHERE job = 'MANAGER'
    GROUP BY deptno;
    

  • 相关阅读:
    51Nod 1352 集合计数(扩展欧几里德)
    莫比乌斯函数
    Codefroces 919D Substring(拓扑排序+DP)
    Codeforces 918C The Monster(括号匹配+思维)
    平面分割类问题总结
    01字典树(待更新)
    进程同步和互斥??
    进程间的八种通信方式----共享内存是最快的 IPC 方式??
    super() 函数??
    HTTP协议详解??
  • 原文地址:https://www.cnblogs.com/hgnulb/p/9904110.html
Copyright © 2011-2022 走看看