力扣184(MySQL)-部门工资最高的员工(中等)
题目:
表: 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)-部门工资最高的员工(中等)的更多相关文章
- LeetCode:184.部门工资最高的员工
题目链接:https://leetcode-cn.com/problems/department-highest-salary/ 题目 Employee 表包含所有员工信息,每个员工有其对应的 Id, ...
- mysql查询之部门工资最高的员工
最近发现一个网站 力扣 查看 上面有很多算法和数据库的题目,做了一下,发现自己平时都疏忽了,因此边做边记录下来 Employee 表包含所有员工信息,每个员工有其对应的 Id, salary 和 de ...
- 184. 部门工资最高的员工 + join + in
184. 部门工资最高的员工 LeetCode_MySql_184 题目描述 题解分析 1.首先需要使用group by找出工资最高的值 2. 然后考虑到最高工资的可能有多位,所以使用in语句找到所有 ...
- leetcode 184 部门工资最高的员工
题目描述:Employee 表包含所有员工信息,每个员工有其对应的 Id, salary 和 department Id. Department 表包含公司所有部门的信息. 编写一个 SQL 查询,找 ...
- sql 184. 部门工资最高的员工
Employee 表包含所有员工信息,每个员工有其对应的 Id, salary 和 department Id. +----+-------+--------+--------------+| Id ...
- [SQL]LeetCode184. 部门工资最高的员工 | Department Highest Salary
The Employee table holds all employees. Every employee has an Id, a salary, and there is also a colu ...
- Q200510-01: 求部门工资最高的员工
问题: 求部门工资最高的员工 Employee 表包含所有员工信息,每个员工有其对应的 Id, salary 和 department Id. +----+-------+--------+----- ...
- sql查询:部门工资前三高的员工和部门工资最高的员工
创建表:Create table If Not Exists Employee (Id int, Name varchar(255), Salary int, DepartmentId int);Cr ...
- 如何用分析函数找出EMP表中每个部门工资最高的员工
EMP表是Oracle测试账户SCOTT中的一张雇员表,首先,我们来看看emp表的数据 SQL> select * from emp; EMPNO ENAME JOB MGR HIREDATE ...
- 部门工资前三高的所有员工 - LeetCode
Employee 表包含所有员工信息,每个员工有其对应的工号 Id,姓名 Name,工资 Salary 和部门编号 DepartmentId . +----+-------+--------+---- ...
随机推荐
- C++实现一个简单的生产者-消费者队列
本文的代码都是ChatGPT生成,我只是做了微小的调整和整合,AI提示词如下: 设计一个C++类,支持生产者-消费者模型,可以通过size函数获取剩余数量 可能第一次生成的不一定合适,多刷新几次. 生 ...
- CRC常用参数模型及C#代码实现
目录 参数模型 算法实现 CRC-32 CRC-32/MPEG-2 表生成算法 参考资料 本文源码 参数模型 CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中 ...
- linux控制显示器的亮度
我使用的manjaro yay -S redshift -b 白天:晚上 要应用的屏幕亮度(在 0.1 和 1.0 之间) -c 文件 从指定的配置文件加载设置 -g R:G:B 要应用的其他伽马校正 ...
- 什么会导致JAVA应用程序的CPU使用率飙升
问题 无限循环的while会导致CPU使用率飙升吗? 经常使用Young GC会导致CPU占用率飙升吗? 具有大量线程的应用程序的CPU使用率是否较高? CPU使用率高的应用程序的线程数是多少? 处于 ...
- [Raspberry Pi]树莓派多线程下串口收发数据
[Raspberry Pi]树莓派多线程下串口收发数据 鼠鼠用的是python开发树莓派,因为python是最优美的语言! 少废话,直接上代码: import threading import ser ...
- 记录--post为什么会发送两次请求?
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 在前段时间的一次面试中,被问到了一个如标题这样的问题.要想好好地去回答这个问题,这里牵扯到的知识点也是比较多的. 那么接下来这篇文章我们就 ...
- 记录转载:uni-app 请求 uni.request封装使用
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 对uni.request的一些共同参数进行简单的封装,减少重复性数据请求代码.方便全局调用. 先在目录下创建 utils 和 common ...
- 替代 Redis 的开源项目「GitHub 热点速览」
近日,知名开源项目 Redis 宣布修改开源协议,从原来的「BSD 3-Clause 开源协议」改成「RSALv2 和 SSPLv1 双重许可证」.新的许可证主要是限制托管 Redis 产品的云服务商 ...
- verilog设计知识集合
verilog设计知识集合 一.基本知识 verilog HDL,verilog硬件描述语言,可从上层到下层一直设计,使用一些列分层的模块来表示极其复杂的数字系统的语言.利用EDA工具将模块转化为网表 ...
- opensips的dispatcher模块笔记
操作系统 :CentOS 7.6_x64 opensips版本:2.4.9 dispatcher模块模块实现了基于目的地址的调度功能,可用作无状态负载均衡,但不能保证均匀分配.今天整理下CentOS7 ...