牛客sql

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

描述

有一个员工employees表简况如下:

请你查找employees里最晚入职员工的所有信息,以上例子输出如下:

最优解法

select * from employees
    where hire_date = (select max(hire_date) from employees);

当然会有order by排序后,用limit获取第一个元素,但这必须要在没有相同数据的情况下才可以

学习:select 后要查询出聚合函数+字段时需要注意的点(group by+聚合函数)

聚合函数经常是搭配group by一起出现的

1、单纯用max——————合法
select max(hire_date) from employees


2、多查询一个字段————此时没用group by所以不合法
select max(hire_date),emp_no from employees


3、加上group by———仍然不合法,此时emp_no不是group by后进行分组的last_name字段
select max(hire_date),emp_no  from employees group by last_name

select * from employees group by last_name(此时也是前后不对应)
4、根据emp_no进行分组—————————合法
select max(hire_date),emp_no  from employees group by emp_no

总结:

1、如果select后面要查的是聚合函数+字段,此时必须要有group by。
2、而用到group by,那么你select的字段只能是进行分组的字段

3、group by id(id是主键)的时候,select什么都没有问题,包括有聚合函数。即下面的sql是合法的,但需要注意不能用 *。

简单总结就是聚合函数里的字段不受控制,而直接查询的字段受控制(分group by的是主键还是其他,如果是主键则不受影响,非主键则要和group by后的字段一致)

select max(hire_date),emp_no,last_name,first_name from employees group by emp_no
//https://blog.csdn.net/qq_48759664/article/details/120436050

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

描述

有一个员工employees表简况如下:

请你查找employees里入职员工时间排名倒数第三的员工所有信息,以上例子输出如下:

注意:可能会存在同一个日期入职的员工,所以入职员工时间排名倒数第三的员工可能不止一个。

注意:该题需要注意数据可能是这样的:

注意:此时倒数第一、二数据是重复的,所以我们真正要找的倒数第三是1989-09-12,此时就要用到DISTINCT进行去重,去完重后在用limit获取第三个元素。(先去重再limit的)

最终sql:
select * from employees where hire_date = 
(select DISTINCT hire_date from employees order by hire_date desc LIMIT 2,1)
 

该题主要考察:DISTINCT+limit+降序

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

该题比较简单,主要考察联表

查找当前薪水详情以及部门编号dept_no_牛客题霸_牛客网

select  salaries.*,dept_manager.dept_no 
    from salaries RIGHT join dept_manager 
    on salaries.emp_no = dept_manager.emp_no 
    order by salaries.emp_no

四、

aa

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值