zoukankan      html  css  js  c++  java
  • 第七天20160803

    --集合运算:并集,交集,补集
    --并集:UNION/UNION ALL
    --查询收入最高与收入最低的员工,显示员工的last_name,salary
    SELECT LAST_NAME AS EMP_NAME,SALARY
    FROM EMPLOYEES
    WHERE SALARY=(SELECT MAX(SALARY) FROM EMPLOYEES)
    UNION
    SELECT LAST_NAME AS NAME,SALARY
    FROM EMPLOYEES
    WHERE SALARY=(SELECT MIN(SALARY) FROM EMPLOYEES)
    ORDER BY SALARY ASC;

    /*
    1.集合运算时,查询结果中列的个数与类型的顺序保持一致。
    2.集合运算时,第一个集合可以决定结果中列的标题。
    3.集合运算时,ORDER BY子句只能出现在最后一个集合中。
    */
    --UNION:自动去重复值。
    --UNION ALL:不去重复值,在不考虑重复值的情况下,建议使用UNION ALL,可以提高效率。

    SELECT LAST_NAME,SALARY
    FROM EMPLOYEES
    UNION ALL
    SELECT LAST_NAME,SALARY
    FROM EMPLOYEES
    UNION ALL
    SELECT LAST_NAME,SALARY
    FROM EMPLOYEES;

    --交集:INTERSECT
    --查询employees表中工资大于3000,并且在50号部门工资的员工,显示last_name,salary,department_id
    SELECT LAST_NAME,SALARY,DEPARTMENT_ID
    FROM EMPLOYEES
    WHERE SALARY>3000
    INTERSECT
    SELECT LAST_NAME,SALARY,DEPARTMENT_ID
    FROM EMPLOYEES
    WHERE DEPARTMENT_ID=50;

    --补集:MINUS
    A:1 2 3 4 5 6
    B:3 4 7
    A - B = 1 2 5 6
    B - A = 7

    --查询employees表中工资最高的第二页的员工信息(每页显示5行数据)
    SELECT R,LAST_NAME,SALARY
    FROM (SELECT ROW_NUMBER() OVER(ORDER BY SALARY DESC) AS R,LAST_NAME,SALARY FROM EMPLOYEES)
    WHERE R BETWEEN 6 AND 10;

    SELECT LAST_NAME,SALARY
    FROM (SELECT LAST_NAME,SALARY
    FROM EMPLOYEES
    ORDER BY SALARY DESC)
    WHERE ROWNUM<=10
    MINUS
    SELECT LAST_NAME,SALARY
    FROM (SELECT LAST_NAME,SALARY
    FROM EMPLOYEES
    ORDER BY SALARY DESC)
    WHERE ROWNUM<=5
    ORDER BY SALARY DESC;

  • 相关阅读:
    构建之法阅读笔记一
    第一冲刺阶段 工作总结 02
    第一冲刺阶段 工作总结 01
    学习进度条 第七周
    团队计划会议 01
    团队博客 一 需求分析
    学习进度条 第六周
    数组练习3 求最大连通子数组的和
    03构建之法阅读笔记之三
    团队项目个人每日总结(4.19)
  • 原文地址:https://www.cnblogs.com/yzyqqhr/p/5733789.html
Copyright © 2011-2022 走看看