• sql刷题day1


    1 查找入职员工时间排名倒数第三的员工所有信息,为了减轻入门难度,目前所有的数据里员工入职的日期都不是同一天

    select * from `employees`
    order by hire_date DESC
    limit 2,1
    

    排序默认是升序(asc)降序 (desc)

    limit

    • 接受一个参数n,选择前n项
    • 接收两个参数n,s,从n+1项开始,取n+1,n+2取s个

    2 查找所有已经分配部门的员工的last_name和first_name以及dept_no(请注意输出描述里各个列的前后顺序)

    select e.last_name,e.first_name,d.dept_no  FROM employees as e,dept_emp as d
    where e.emp_no=d.emp_no
    

    全自然连接 where子句

    3 查找所有员工的last_name和first_name以及对应部门编号dept_no,也包括暂时没有分配具体部门的员工

    SELECT e.last_name,e.first_name,d.dept_no
    from employees as e LEFT OUTER JOIN dept_emp as d
    on(e.emp_no=d.emp_no)
    

    使用了左外连接,展示所有左表的信息(右外连接展示所有右表)
    使用外连接时不能使用where子句,使用on来限定查询条件

    4 查找薪水变动超过15次的员工号emp_no以及其对应的变动次数t

    select emp_no,count(*) as t from salaries
    GROUP BY emp_no
    HAVING t>15
    

    在使用了group by分组之后在进行条件筛选需要使用having子句,而不是where

    5 找出所有员工当前(to_date='9999-01-01')具体的薪水salary情况,对于相同的薪水只显示一次,并按照逆序显示

    select salary
    from salaries
    where to_date='9999-01-01'
    group by salary
    order by salary desc
    

    时间date需要加‘’
    去重可以使用distinct,但是group by效率更高
    可以在使用group by子句之前使用where先进行一次笛卡尔积筛选,再进行分组

    6 获取所有非manager的员工emp_no

    思路1

    使用集合运算

    SELECT employees.emp_no
    from employees
    EXCEPT
    select dept_manager.emp_no
    from dept_manager
    

    使用集合运算(mysql8.0好像不支持,所以一直错)except union(并) intersect(交)

    思路二

    使用左外连接,去除部门号为空的员工

    SELECT e.emp_no
    from employees as e LEFT JOIN dept_manager as d
    on e.emp_no=d.emp_no
    WHERE dept_no is null
    

    判断是否为空 不可以用=null 要用is null

    思路三

    使用 not in

    select emp_no
    from employees
    where emp_no NOT in(
        select emp_no
        from dept_manager
    )
    

    copy的代码,不是很有感觉,硬记语法吧

  • 相关阅读:
    HDU3183 A Magic Lamp —— 贪心(单调队列优化)/ RMQ / 线段树
    POJ2559 Largest Rectangle in a Histogram —— 单调栈
    Gym
    UVALive
    POJ2389 —— 高精度乘法
    C#实现http协议下载的断点续传
    RSA----实际函数库选择
    RSA实践指南
    AWK第一篇------全面介绍
    url语法
  • 原文地址:https://www.cnblogs.com/wjune-0405/p/14095108.html
Copyright © 2020-2023  润新知