zoukankan      html  css  js  c++  java
  • 数据库之 MySQL --- 数据处理 之 多行子查询(五)


    【1】需求: 谁的工资比Abel 高?
    方式一: 第一步线查出Abel共子 第二部进行过滤

    SELECT salary
    FROM employees
    WHERE last_name = 'Abel';
    
    SELECT first_name,last_name,salary
    FROM employees
    WHERE salary>11000

    方式二: 自连接

    SELECT e2.last_name,e2.salary
    FROM employees e1 JOIN employees e2
    ON e1.last_name = 'Abel' AND e2.salary>e1.salary
    
    

    方式三: 子查询
    写子查询时,建议从里向外写

        单行子查询 : 查询的结果只有一条数据
        多行子查询 : 查询的结果有多条数据

    SELECT first_name,salary
    FROM employees
    WHERE salary>(
        SELECT salary
        FROM employees
        WHERE last_name='Abel' -- 单行子查询
    )
    
    SELECT first_name ,salary
    FROM employees
    WHERE (
        SELECT salary
        FROM employees
        WHERE last_name ='Abel'
    )<salary

    【2】 需求:返回job_id 与141好员工相同,salary比143好员工多的员工姓名,job_id 和工资

        两个条件 : 1.与141号员工的job_id相同    2.salary比143号员工的要多

    SELECT first_name,job_id,salary
    FROM employees
    WHERE job_id =(
        SELECT job_id
        FROM employees
        WHERE employee_id=141
    )
    AND salary>(
        SELECT salary
        FROM employees
        WHERE employee_id=141
    )

    【3】需求:返回公司工资最少的员工的last_name,job_id 和salary
     求最低工资
    过滤: 薪水和最低工资相同的哪个员工

    SELECT last_name,job_id,salary
    FROM employees
    WHERE salary=(
        SELECT MIN(salary)
        FROM employees
    )

    【4】需求:查询最低工资大于50好部门最低工资的部门id 和其最低工资

    SELECT department_id,MIN(salary)
    FROM employees
    WHERE department_id IS NOT NULL
    GROUP BY department_id
    HAVING MIN(salary) > (
        SELECT MIN(salary)
        FROM employees
        WHERE department_id = 50
    )
    

        in  --  salary in (10,20,30) 只要等于其中的一个即可 (满足一个即可)
        any --  salary > any (10,20,30) 只要大于其中的一个即可 (满足一个即可)
        all --  salary > all (10,20,30) 必须大于所有的数据  (必须都得满足)


    【5】需求 : 返回其它部门中比job_id为‘IT_PROG’部门任一工资低的员工的员工号、姓名、job_id 以及salary

    SELECT employee_id,first_name,job_id,salary
    FROM employees
    WHERE salary<ANY(
        SELECT salary
        FROM employees
        WHERE job_id='IT_PROG'
    )AND job_id <>'IT_PROG'

     【6】需求:返回其它部门中比job_id为‘IT_PROG’部门所有工资都低的员工的员工号、姓名、job_id

    SELECT     employee_id,first_name,job_id,salary
    FROM employees
    WHERE salary < ALL(
        SELECT salary
        FROM employees
        WHERE job_id='IT_PROG'
    )AND job_id<>'IT_PROG'
  • 相关阅读:
    Python_01安装与配置
    数据库的事务日志已满,起因为"LOG_BACKUP"
    百度网盘视频在线倍速播放的方法——Js 一行代码实现
    Socket里Client和Server
    Python自动化执行遍历点击列表的前20行每一行
    pyhton判断闰年
    Python程序结构-包
    试题 历届试题 错误票据
    试题 历届试题 剪格子
    试题 历届试题 打印十字图
  • 原文地址:https://www.cnblogs.com/wushaopei/p/11732837.html
Copyright © 2011-2022 走看看