一天一道Sql题(day01)

获取每个部门中薪水最高的员工相关信息_牛客题霸_牛客网

思路:先将员工表和薪水表关联,根据部门分组升序排序后获取每个部门薪水的最大值。查询出部门id和每个部门最大薪水作为mytable1。

再将员工表和薪水表关联,获得mytable2。将mytable1和mytable2根据部门id和最大薪水作为条件进行左连接,左连接目的是筛去mytable2中多余的数据,最后展示部门id、员工id和最大薪水即可。

如果最大薪水有相同的,会一并将薪水相同的员工查出来。

sql:

复制代码
select mytable2.dept_no,mytable2.emp_no,mytable2.salary from 
( select dept_no,max(salary) sal from dept_emp d, salaries s 
where d.emp_no = s.emp_no and d.to_date = s.to_date and d.to_date = '9999-01-01'
group by dept_no
order by dept_no ) mytable left join
(select d.emp_no,d.dept_no,s.salary from dept_emp d, salaries s 
where d.emp_no = s.emp_no and d.to_date = s.to_date and d.to_date = '9999-01-01') mytable2
on mytable.dept_no=mytable2.dept_no and mytable.sal=mytable2.salary

如果思路或sql有误可在评论区提出~~

相关推荐
心随_风动10 小时前
Ubuntu 文件复制大师:精通cp命令完整指南
数据库·ubuntu·postgresql
不要再敲了10 小时前
JDBC从入门到面试:全面掌握Java数据库连接技术
java·数据库·面试
恣艺13 小时前
Redis列表(List):实现队列/栈的利器,底层原理与实战
数据库·redis·list
秋难降14 小时前
零基础学习SQL(十一):SQL 索引结构|从 B+Tree 到 Hash,面试常问的 “为啥选 B+Tree” 有答案了
数据库·后端·mysql
代码的余温14 小时前
Linux内核调优实战指南
linux·服务器·数据库
almighty2714 小时前
C# DataGridView表头自定义设置全攻略
数据库·c#·winform·datagridview·自定义表头
ljh57464911915 小时前
mysql 必须在逗号分隔字符串和JSON字段之间二选一,怎么选
数据库·mysql·json
论迹15 小时前
【Redis】-- 持久化
数据库·redis·缓存
getdu15 小时前
Redis面试相关
数据库·redis·面试
TDengine (老段)15 小时前
TDengine 选择函数 TOP() 用户手册
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据