学习不做题实战的话,很多的知识点都无法顺畅地掌握清楚,前面几个入门题还是能很好地带入sql思维的。
有一个员工employees表简况如下:
请你查找employees里最晚入职员工的所有信息,以上例子输出如下:
复盘思考:这里是只需要查询最晚入职的员工的全部信息,所以搜索内容也做了简化,直接用
select * from employees
就可以啦,然后寻找定位段落在hire_date ,了解到只要找到最大的日期值就能定位到最晚入职员工的信息。
select max(hire_date) from employees;
这里用到一个标量子查询,直接添加后面作为筛选条件。
select & from employees
where hire_date = (select max(hire_date) from employees);
需要考虑的几点内容:1.虽然已经完成范例中的现象但是不能保证这个语句就可以一直正确,判断所有的信息。
2.确定的是,有可能最晚入职的员工有很多位,不能使用limit的限制语句进行限制。
3.这里可能还会有人想到,直接用hire_date 进行分类,然后升序好像就好了。
select * from employees
group by hire_date
order by hire_date desc
limit 1;
这样运行也是可以的,算是一种骗过上帝的方法,首先对hire_date 进行分组,然后按照hire_date分类,寻找降序排列,理所当然上面的就是最晚入职的员工,限制只输出上面一行就可以啦。
暂时笔者还不知道如何进行一个分组的输出,前提是进行子查询查到最大分组,要不这样应该能方便很多,但是进行大量的数据筛选的时候,还是先选出最大值在进行查询要快速很多。