【面试必刷】Mysql编程题:第五期

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介: 【面试必刷】Mysql编程题:第五期

题目描述


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

image.png

有一个薪水表 salaries 简况如下:

image.png

获取每个部门中当前员工薪水最高的相关信息,给出 dept_noemp_no 以及其对应的 salary ,按照部门编号升序排列,以上例子输出如下: (注意: MysqlSqliteselect 非聚合列的结果可能不一样)

image.png


考察知识点


INNER JOINORDER BYFROM 中嵌套查询结果。


解题思路


本题的难点主要在于:薪水最大的员工可能不止一个,这样就需要先获取每个部门的最大薪水,再在对应部门中找薪水等于最大薪水的员工。


我们可以先获取部门编号和最高薪水 ASr1,再获取员工信息 d.emp_no, d.dept_no, s.salary ,之后连接两个表,在两个表中根据限定条件即可获取结果集,最后将结果集按照部门编号升序。


1.获取部门编号和最高薪水 as r1

SELECT d.dept_no, MAX(salary) AS max_salary
FROM dept_emp AS d INNER JOIN salaries AS s
ON d.emp_no = s.emp_no
GROUP BY dept_no
复制代码


2.获取员工的相关信息。

SELECT d.emp_no, d.dept_no, s.salary
FROM dept_emp AS d INNER JOIN salaries AS s
ON d.emp_no = s.emp_no
复制代码


3.连接上面的两个表。

SELECT r1.dept_no, r2.emp_no, r2.salary AS maxSalary
FROM (SELECT d.dept_no, MAX(salary) AS max_salary
FROM dept_emp AS d INNER JOIN salaries AS s
ON d.emp_no = s.emp_no
GROUP BY dept_no) AS r1
INNER JOIN
(SELECT d.emp_no, d.dept_no, s.salary
FROM dept_emp AS d INNER JOIN salaries AS s
ON d.emp_no = s.emp_no) AS r2
ON r1.dept_no = r2.dept_no AND r1.max_salary = r2.salary
ORDER BY r1.dept_no



相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
2
分享
相关文章
美团面试:MySQL为什么 不用 Docker部署?
45岁老架构师尼恩在读者交流群中分享了关于“MySQL为什么不推荐使用Docker部署”的深入分析。通过系统化的梳理,尼恩帮助读者理解为何大型MySQL数据库通常不使用Docker部署,主要涉及性能、管理复杂度和稳定性等方面的考量。文章详细解释了有状态容器的特点、Docker的资源隔离问题以及磁盘IO性能损耗,并提供了小型MySQL使用Docker的最佳实践。此外,尼恩还介绍了Share Nothing架构的优势及其应用场景,强调了配置管理和数据持久化的挑战。最后,尼恩建议读者参考《尼恩Java面试宝典PDF》以提升技术能力,更好地应对面试中的难题。
Crack Coder:在线面试“AI外挂”!编程问题秒出答案,完全绕过屏幕监控,连录屏都抓不到痕迹!
Crack Coder 是一款开源的隐形 AI 辅助工具,专为技术面试设计,支持多种编程语言,提供实时编程问题解决方案,帮助面试者高效解决问题。
192 14
京东面试:MySQL MVCC是如何实现的?如何通过MVCC实现读已提交、可重复读隔离级别的?
1.请解释什么是MVCC,它在数据库中的作用是什么? 2.在MySQL中,MVCC是如何实现的?请简述其工作原理。 3.MVCC是如何解决读-写和写-写冲突的? 4.在并发环境中,当多个事务同时读取同一行数据时,MVCC是如何保证每个事务看到的数据版本是一致的? 5.MVCC如何帮助提高数据库的并发性能?
京东面试:MySQL MVCC是如何实现的?如何通过MVCC实现读已提交、可重复读隔离级别的?
【IO面试题 四】、介绍一下Java的序列化与反序列化
Java的序列化与反序列化允许对象通过实现Serializable接口转换成字节序列并存储或传输,之后可以通过ObjectInputStream和ObjectOutputStream的方法将这些字节序列恢复成对象。
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
本文详解自旋锁的概念、优缺点、使用场景及Java实现。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?

推荐镜像

更多
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问