• 牛客网MySQL在线编程


    题目:牛客网MySQL在线编程

    SQL1. 查找最晚入职员工的所有信息

    select * from employees where hire_date = (select max(hire_date) from employees)
    
    # 下面是错误的代码
    # select * from employees where (hire_date = select max(hire_date) from employees)

    错误原因:

    SQL2. 查找员工入职时间排名倒数第三的员工信息

    select * from employees 
    order by hire_date desc
    limit 1 offset 2;
    
    
    # 下面是错误代码
    # select * from employees 
    # where 
    # group by hire_date
    # order by hire_date desc
    # limit 1 offset 2

    错误原因:

    SQL3.查找当前薪水详情以及部门编号 dept_no

    -- 查找当前薪水详情以及部门编号 dept_no
    
    SELECT d.emp_no, s.salary, s.from_date, s.to_date, d.dept_no
    FROM dept_manager d
    JOIN salaries s
    ON d.emp_no = s.emp_no
    ORDER BY s.emp_no

    SQL4.查找所有已经分配部门的员工的last_name和first_name以及dept_no

    SELECT e.last_name, e.first_name, d.dept_no
    FROM `dept_emp` d
    JOIN employees e
    ON d.emp_no = e.emp_no

    SQL5.查找所有员工的last_name和first_name以及对应部门编号 dept_no

    SELECT e.last_name, e.first_name, d.dept_no
    FROM employees e
    LEFT JOIN dept_emp d
    ON e.emp_no = d.emp_no

    SQL7. 查找薪水记录超过15次的员工工号emp_no以及对应的记录次数

    select emp_no, count(emp_no) t
    from salaries
    group by emp_no
    having t>15;

    SQL8. 找出所有员工当前薪水情况

    SELECT DISTINCT(salary) 
    FROM salaries
    ORDER BY salary DESC

    SQL10. 获取所有非manager的员工emp_no          

    select emp_no
    from employees where emp_no
    not in (select emp_no from dept_manager)
    # 下面是错误代码
    select e.emp_no 
    from employees e
    join dept_manager d
    on e.emp_no != d.emp_no;

    输出结果:

    10001
    10001
    10002
    10003

    # 下面是错误代码
    select e.emp_no 
    from employees e
    join dept_manager d
    on e.emp_no not in d.emp_no;

    SQL11. 获取所有员工当前的 manager

    SELECT e.emp_no, m.emp_no AS manager
    FROM dept_emp e, dept_manager m
    WHERE e.emp_no != m.emp_no
    AND e.dept_no = m.dept_no

     

    SQL12.获取每个部门中当前员工薪水最高的相关信息

    SELECT d.dept_no, d.emp_no, MAX(s.salary) AS maxSalary
    FROM dept_emp d, salaries s
    WHERE d.emp_no = s.emp_no
    GROUP BY d.dept_no
    ORDER BY d.dept_no

     

     SQL13.查找 employees 表中 emp_no 为奇数并且 last_name 不为 Mary 的员工信息,并按照 hire_date 逆序排列

    SELECT * FROM employees
    WHERE emp_no%2 = 1 AND last_name != 'Mary'
    ORDER BY hire_date DESC

    SQL23. 对所有员工的薪水按照salary降序进行1-N的排名,要求相同salary并列且按照emp_no升序排列

    select emp_no, salary, DENSE_rank () OVER ( ORDER BY salary DESC ) t_rank
    from salaries
    order by t_rank, emp_no

    下面是错误代码:

    select emp_no, salary, DENSE_rank () OVER ( ORDER BY salary DESC ) t_rank
    from salaries
    order by emp_no

    错位原因:为什么按emp_no升序排序错误?

  • 相关阅读:
    使用LR编写windows sockets协议xml报文格式脚本实战
    使用LR编写HTTP协议Json报文格式接口脚本实战
    web类协议脚本-飞机订票系统示例
    使用LR编写下载类脚本
    python算法-选择排序
    python算法-冒泡排序
    用户在浏览器中输入一个url发生的奥秘
    浅谈cookie和session
    selenium加载配置参数,让chrome浏览器不出现‘Chrome正在受到自动软件的控制’的提示语,以及后台静默模式启动自动化测试,不占用桌面的方法
    Python之文件和目录操作
  • 原文地址:https://www.cnblogs.com/keye/p/14935652.html
Copyright © 2020-2023  润新知