牛客网sql刷题解析--持续更新中

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

  解题步骤:

   题目:查询最晚入职员工的所有信息
        目标:查询员工的所有信息
   筛选条件:最晚入职
           答案:

 1 SELECT
 2     *--查询所有信息就用*
 3 FROM
 4     employees
 5 WHERE
 6     hire_date = (--这里是一个子查询,因为要和hire_date匹配,所以只能是一个值,注意max函数使用规则
 7         SELECT
 8             MAX(hire_date)
 9         FROM
10             employees
11     )

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

     

  解题步骤:

   题目:查找入职员工时间排名倒数第三的员工所有信息
        目标:查询员工的所有信息
   筛选条件:入职时间到第三
           答案:

 1 SELECT
 2     *--所有信息,用*省事
 3 FROM
 4     employees
 5 where hire_date = ( SELECT DISTINCT--子查询,注意hire_date是一个值,子查询的返回值一定要是一个
 6                         hire_date
 7                     FROM
 8                         employees
 9                     ORDER BY--这里有一个小技巧,倒序排,从第三条取,去一条
10                         hire_date DESC
11 limit 2,1--分页语法要仔细看看,limit m,n=> 从m+1开始取,取n条
12 )

 

查找各个部门当前(to_date='9999-01-01')领导当前薪水详情以及其对应部门编号dept_no

解题步骤:

   题目:查找各个部门当前(to_date='9999-01-01')领导当前薪水详情以及其对应部门编号dept_no
        目标:查询领导薪水详情,对应部门编号
   筛选条件:部门表当前时间,隐藏的条件(薪水表当前时间)
           答案:

1 SELECT
2     s.*,
3     d.dept_no
4 FROM
5     salaries       s--左联到部门表,薪水表人全,所以做主表比较好,不会出现关联出空的情况
6     LEFT JOIN dept_manager   d ON s.emp_no = d.emp_no
7 WHERE
8     s.TO_DATE = '9999-01-01'--筛选条件
9     AND d.TO_DATE = '9999-01-01'

 

猜你喜欢

转载自www.cnblogs.com/xiaoshahai/p/11458597.html