zoukankan      html  css  js  c++  java
  • 初学SQL语句练习2

    -- 子查询

    --单行子查询
    -- 查询出所有比雇员姓名为“CLARK ”工资高的员工的信息
    SELECT * FROM EMP WHERE SAL > (SELECT SAL FROM EMP WHERE ENAME ='CLARK');

    -- 查询工资高于平均工资的雇员名字和工资。
    SELECT ENAME,SAL FROM EMP
    WHERE SAL >(SELECT ROUND(AVG(SAL)) FROM EMP);


    --查询和 SCOTT 同一部门且比他工资低的雇员名字和工资。
    SELECT ENAME,SAL FROM EMP
    WHERE DEPTNO = (SELECT DEPTNO FROM EMP WHERE ENAME = 'SCOTT')
    AND SAL <(SELECT SAL FROM EMP WHERE ENAME = 'SCOTT');


    -- 查询职务和 SCOTT 相同,比 SCOTT 雇佣时间早的雇员信息
    SELECT * FROM EMP
    WHERE JOB = (SELECT JOB FROM EMP WHERE ENAME = 'SCOTT')
    AND HIREDATE <(SELECT HIREDATE FROM EMP WHERE ENAME = 'SCOTT');


    -- 查询工资比 SCOTT 高或者雇佣时间比 SCOTT 早的雇员的编号和名字
    SELECT EMPNO,ENAME FROM EMP
    WHERE SAL >(SELECT SAL FROM EMP WHERE ENAME = 'SCOTT')
    OR HIREDATE <(SELECT HIREDATE FROM EMP WHERE ENAME ='SCOTT');


    --多行子查询
    -->all() 表示匹配子查询结果所有值进行比较
    -->=<any() 表示匹配子查询结果中的任意一个值
    --in() 表示匹配子查询结果中的任意一个值
    --当any()前添加=号 那么和in()相同的意思


    -- 查询工资低于任何一个职务是“ CLERK ”的工资的雇员信息。
    --1.获取工作为CLERK的员工工资
    SELECT * FROM EMP WHERE SAL < ALL(SELECT SAL FROM EMP WHERE JOB = 'CLERK');

    -- 查询工资比所有的“ SALESMAN ”都高的雇员的编号、名字和工资。
    --1.获取SALESMAN的工资
    --1)双击SQL行,F8执行
    --2)按home键 shift+end 选中单行 F8执行
    --1250 1600
    SELECT EMPNO,ENAME,SAL FROM EMP WHERE SAL >ALL(SELECT SAL FROM EMP WHERE JOB ='SALESMAN');


    -- 查询部门 20 中职务同部门 10 的雇员一样的雇员信息。
    --1.获取10号部门员工的工种
    SELECT * FROM EMP WHERE JOB =ANY(SELECT JOB FROM EMP WHERE DEPTNO = 10) AND DEPTNO = 20;

    -- 查询在雇员中有哪些人是领导
    --1.领导的雇员编号
    SELECT * FROM EMP WHERE EMPNO IN(SELECT DISTINCT MGR FROM EMP WHERE MGR IS NOT NULL);

    -- 找出部门编号为 20 的所有员工中收入最高的职员
    --1.获取20号部门的所有员工最高工资
    SELECT * FROM EMP WHERE SAL =(SELECT MAX(SAL) FROM EMP WHERE DEPTNO = 20) AND DEPTNO = 20;

    -- 查询每个部门平均薪水的等级
    -- 可以将子查询作为一张表格,实现多表关联查询
    --SQL语句执行过程:from-->where -->group by --->having --->select --->order by

    --SELECT ROUND(AVG(SAL)) AVG_SAL FROM EMP WHERE AVG_SAL=2073; --报错


    --1.获取每个部门的平均薪水
    SELECT T.DEPTNO,S.GRADE
    FROM (SELECT DEPTNO,ROUND(AVG(SAL)) AVG_SAL FROM EMP GROUP BY DEPTNO) T,SALGRADE S
    WHERE T.AVG_SAL BETWEEN S.LOSAL AND S.HISAL;

    -- 查询部门的详细信息及部门平均工资和等级
    --1.获取部门平均工资
    SELECT D.*,T2.AVG_SAL,T2.GRADE
    FROM DEPT D ,
    (SELECT T.DEPTNO,S.GRADE,T.AVG_SAL
    FROM (SELECT DEPTNO,ROUND(AVG(SAL)) AVG_SAL FROM EMP GROUP BY DEPTNO) T,SALGRADE S
    WHERE T.AVG_SAL BETWEEN S.LOSAL AND S.HISAL) T2
    WHERE D.DEPTNO = T2.DEPTNO(+);

  • 相关阅读:
    PHP设计模式之----简单工厂模式
    PHP设计模式之----单例模式
    php排序算法
    PHP代码实现二分法查找
    Centos 7 下安装PHP7.2(与Apache搭配的安装方式)
    PHPSTORM Live-Templates变量速查表
    Centos 7 设置ip地址
    Centos 7下编译安装Apache
    Centos 7下编译安装Mysql
    apache配置Directory目录权限的一些配置
  • 原文地址:https://www.cnblogs.com/fjl0418/p/7929522.html
Copyright © 2011-2022 走看看