娜酱为了做数据分析而重启SQL之路,目前选取了牛客网进行编程练习。今天的练习是按照特定条件进行查找操作,涉及排序、子查询等。
题目描述
提交并通过的代码段
解题有以下重点:
1、【看输出】查询的结果是员工的所有信息 所以用 * 进行查询
2、【看约束条件】查询的目标员工是最晚入职的,所以翻译过来就是要找到hire_date最大的员工
3、【看扩展条件】“目前所有的数据里员工入职的日期都不是同一天” 也就是说不存在多条返回记录
而我提交并通过的代码如下:
select * from employees
where hire_date in (select max(hire_date) from employees);
以上写法是通过子查询获取hire_date最大的员工集,然后通过where子句提取在该数据集的员工数据。
这种写法的好处就是可以无视第三条扩展条件,无论是否有相同日期入职的员工都适用。
另一种写法可第三条扩展条件的理解,对hire_date通过order by进行desc(降序)排序然后通过limit 取首条记录,如 select * from employees order by hire_date desc limit 0,1;
领取专属 10元无门槛券
私享最新 技术干货