zoukankan      html  css  js  c++  java
  • SQL子查询

    z子查询就是将一个查询(子查询)的结果作为另一个查询(主查询)的数据来源或判断条件的查询。常见的子查询有WHERE子查询,HAVING子查询,FROM子查询,SELECT子查询,EXISTS子查询,子查询要使用小括号();

    WHERE子查询

    在WHERE子句中进行使用查询

    SELECT *
    FROM EMP
    WHERE SAL < (SELECT AVG(SAL) FROM EMP);
    • 查询薪资比平均薪资低的员工信息

    HAVING子查询

    HAVING子句是对分组统计函数进行过滤的子句,也可以在HAVING子句中使用子查询

    SELECT JOB,AVG(SAL)
    FROM EMP
    GROUP BY JOB
    HAVING AVG(SAL) = (SELECT MAX(AVG(SAL)) FROM EMP GROUP BY JOB);
    • 查询平均薪资最高的职位及其平均薪资

    FROM子查询

    FROM子查询就是将一个查询结构(一般多行多列)作为主查询的数据源

    SELECT JOB,AVG(SAL)
    FROM (SELECT JOB,AVG(SAL) AS AVGSAL FROM EMP GROUP BY JOB)TEMP
    WHERE TEMP.AVGSAL>2000;
    • 查询平均薪资高于2000的职位以及该职位的平均薪资

    SELECT子查询

    SELECT子查询在SELECT子句中使用查询的结果(一般会和dual空表一起使用)

    SELECT (SELECT COUNT(*) FROM EMP WHERE JOB = 'SALESMAN')/(SELECT COUNT(*) FROM EMP)
    FROM DUAL;
    • 职位是SALESMAN的员工占总员工的比例

    EXISIT子查询

    将主查询的数据带到子查询中验证,如果成功则返回true,否则发水false。主查询接收true是就会显示这条数据,flase就不会显示。

    SELECT *
    FROM EMP E
    WHERE EXISIT (
        SELECT *
        FROM DEPT D
        WHERE E.DEPTNO = D.DEPTNO);
    • 查询有部门的员工信息

    查询薪资排名的员工信息(面试)

    SELECT *
    FROM EMP
    WHERE SAL = (SELECT MIN(SAL) 
                FROM (SELECT ROWNUM,SAL 
                     FROM (SELECT SAL FROM EMP GROUP BY SAL ORDER BY SAL DESC)
                     WHERE ROWNUM<=n));
    • 查询薪资排名第n个员工的信息(包括并列排名)

    思路:
    1.先按薪资降序分组
    2.再取前n名薪资中最低的薪资,即第n名的薪资。
    3.最后在原表中找出薪资与最低薪资相同的员工信息。

  • 相关阅读:
    课程作业四 生成随机数并求和,大数运算
    课程作业三 string,char操作
    课程作业二 类内静态内容(代码块,静态变量),构造函数,非静态代码块执行顺序
    十一作业 java数值范围方面训练
    课程作业一 将字符串型数组里的数字相加
    NABCD需求分析
    人月神话阅读笔记01
    软件工程第五周总结
    清明第三天
    清明第二天安排
  • 原文地址:https://www.cnblogs.com/xysun/p/12169836.html
Copyright © 2011-2022 走看看