题目:

表: Employee

表: Department

编写SQL查询以查找每个部门中薪资最高的员工。
按 任意顺序 返回结果表。
查询结果格式如下例所示。

 解题思路:

方法一:窗口函数和多表联结

①先将Employee表按部门id分组,然后再按薪资进行降序排序。

②将临时表与department通过部门id连起来,然后再筛选出排名为1的相关数据。

 1 # Write your MySQL query statement below
2 SELECT
3 b.name AS Department,
4 a.name AS Employee,
5 salary as Salary
6 FROM
7 ( SELECT
8 name,
9 departmentId,
10 salary,
11 dense_rank ( ) over (
12 PARTITION BY departmentId ORDER BY salary desc ) AS rnk
13 FROM Employee
14 ) AS a
15 JOIN Department b ON a.departmentid = b.id
16 WHERE
17 a.rnk = 1;

方法二:多表联结和 IN

①先找到每个部门下的最大薪资,以部门id进行分组,作为后续的筛选条件

②将两个表通过部门id进行联结

③最后从联结的表中以第一步查找的结果为条件筛选出符合要求的部门最高的薪资。

小知识:

①窗口函数:dense_rank ( ) over ( PARTITION BY ... ORDER BY ... desc ) :相同的序号一样,下一个不同的连续数字(1,2,2,3...)

其实这里用rank()也可以,相同的序号一样,下一个不同的跳跃。(1,2,2,4...)

②sql中的内连接【交集】:inner join...on ...(简写为join...on...)

③in:可以同时in查询两个字段的不同值。

力扣184(MySQL)-部门工资最高的员工(中等)的更多相关文章

  1. LeetCode:184.部门工资最高的员工

    题目链接:https://leetcode-cn.com/problems/department-highest-salary/ 题目 Employee 表包含所有员工信息,每个员工有其对应的 Id, ...

  2. mysql查询之部门工资最高的员工

    最近发现一个网站 力扣 查看 上面有很多算法和数据库的题目,做了一下,发现自己平时都疏忽了,因此边做边记录下来 Employee 表包含所有员工信息,每个员工有其对应的 Id, salary 和 de ...

  3. 184. 部门工资最高的员工 + join + in

    184. 部门工资最高的员工 LeetCode_MySql_184 题目描述 题解分析 1.首先需要使用group by找出工资最高的值 2. 然后考虑到最高工资的可能有多位,所以使用in语句找到所有 ...

  4. leetcode 184 部门工资最高的员工

    题目描述:Employee 表包含所有员工信息,每个员工有其对应的 Id, salary 和 department Id. Department 表包含公司所有部门的信息. 编写一个 SQL 查询,找 ...

  5. sql 184. 部门工资最高的员工

    Employee 表包含所有员工信息,每个员工有其对应的 Id, salary 和 department Id. +----+-------+--------+--------------+| Id ...

  6. [SQL]LeetCode184. 部门工资最高的员工 | Department Highest Salary

    The Employee table holds all employees. Every employee has an Id, a salary, and there is also a colu ...

  7. Q200510-01: 求部门工资最高的员工

    问题: 求部门工资最高的员工 Employee 表包含所有员工信息,每个员工有其对应的 Id, salary 和 department Id. +----+-------+--------+----- ...

  8. sql查询:部门工资前三高的员工和部门工资最高的员工

    创建表:Create table If Not Exists Employee (Id int, Name varchar(255), Salary int, DepartmentId int);Cr ...

  9. 如何用分析函数找出EMP表中每个部门工资最高的员工

    EMP表是Oracle测试账户SCOTT中的一张雇员表,首先,我们来看看emp表的数据 SQL> select * from emp; EMPNO ENAME JOB MGR HIREDATE ...

  10. 部门工资前三高的所有员工 - LeetCode

    Employee 表包含所有员工信息,每个员工有其对应的工号 Id,姓名 Name,工资 Salary 和部门编号 DepartmentId . +----+-------+--------+---- ...

随机推荐

  1. vue peek 解决了 vue-template 加载 相对目录 ./components 组件内容 vscode

    点击组件跳转,vue-helper 带@的能跳转,相对目录的不能跳转.vue peek 解决了这个问题.

  2. FFmpeg命令行之ffprobe

    一.简述 ffprobe是ffmpeg命令行工具中相对简单的,此命令是用来查看媒体文件格式的工具. 二.命令格式 在命令行中输入如下格式的命令: ffprobe [文件名] 三.使用ffprobe查看 ...

  3. 寒武纪加速平台(MLU200系列) 摸鱼指南(三)--- 模型移植-分割网络实例

    PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明   本文作为本人csdn blog的主站的备份.(Bl ...

  4. Linux文件查找、三剑客、正则表达式

    Linux文件查找 1.find查找概述 为什么要有文件查找,因为很多时候我们可能会忘了某个文件所在的位置,此时就需要通过find来查找. find命令可以根据不同的条件来进行查找文件,例如:文件名称 ...

  5. [.NET项目实战] Elsa开源工作流组件应用(三):实战演练

    补充 之前的文章简单介绍了工作流和Elsa工作流库,这里再补充说明两点 工作流的使用场景非常广泛,几乎涵盖了所有需要进行业务流程自动化管理的领域. 学习一个开源库,最简单的方法就是看源码,Elsa的工 ...

  6. Java事件侦听器学习记录

    前言 我们监听事件之前要有事件源source,创建事件源(Event),发布事件(publishEvent),然后才能到监听事件. 事件驱动机制是观察者模式(称发布订阅)具体实现,事件对象(Event ...

  7. KingbaseES V8R6集群运维案例-- 备库数据库服务意外down分析

    案例说明: KingbaseES V8R6一主二备架构的集群,两个备库节点sys_log日志分别不同时间点收到'fast shutdown request'的日志信息,导致备库数据库服务down,需要 ...

  8. KingbaseES 表级设置autovacuum有关参数和触发机制

    前言 在表级别设置autovacuum有关参数清理表的死亡元祖可以有效规避autovacuum触发全局默认阈值的高峰.例如,如果想让表的autovacuum任务更频繁,可以在表级设置更小的触发auto ...

  9. 24年3月使用VS22编译Telegram Desktop

    0.环境准备,我使用的VS版本是17.9.4,SDK版本是10.0.22621.0,最好不要用太老的版本 1.去下载Python,git,cmake这三个工具,然后在D盘根目录新建TBuild文件夹, ...

  10. 【已解决】初始化 Hive 元数据库报错slf4j-log4j12-1.7.25.jar包冲突

    错误log描述 [root@hadoop102 hive]# schematool -initSchema -dbType mysql -verboseSLF4J: Class path contai ...