题目:

表: 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. Dot Log 插件 输入 .log 回车 自动插入 console.log - vscode插件

    Dot Log 插件 输入 .log 回车 自动插入 console.log

  2. 一个简单的spdlog使用示例

    目录 引用源码 封装Log头文件 使用方法 spdlog是一个开源.跨平台.无依赖.只有头文件的C++11日志库,网上介绍的文章有很多这里就不过多的介绍了,GitHub链接:https://githu ...

  3. pod为什么会被驱逐及如何避免pod被驱逐导致的服务中断

    Pod被驱逐的原因主要有以下几点: 资源不足:当节点资源(如CPU.内存.存储等)不足以满足Pod的资源需求时,调度器会选择将其中一个或多个Pod驱逐出节点,以便在资源有限的节点上安排新的Pod. 超 ...

  4. ubuntu 14.04 x64 安装ia32-libs(时间点为2015.1.2)

    PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明   本文发布于 2015-01-02 22:45:12 ...

  5. 【atcoder beginner 308E - MEX】

    前缀和 二分查找 打表枚举 代码如下 import java.io.BufferedReader; import java.io.IOException; import java.io.InputSt ...

  6. 首届实时渲染3D动画创作大赛最佳人气奖?你说了算!

    根据评选标准,经过评委组层层选拔,首届实时渲染3D动画创作大赛「最佳人气奖」投票开始啦!!! 本次赛事报名人数达212人,入围作品共40份,其中Omniverse组11份,专业组15份,学生组14份. ...

  7. 记录--h5端调用手机摄像头实现扫一扫功能

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 一.前言 最近有遇到一个需求,在h5浏览器中实现扫码功能,其本质便是打开手机摄像头定时拍照,特此做一个记录.主要技术栈采用的是vue2,使 ...

  8. tableau 工作表分页

    原创优阅达数据科技有限公司 https://mp.weixin.qq.com/s?__biz=MzA5MTU3NDI2NQ==&mid=2649465570&idx=1&sn= ...

  9. Scala 惰性加载

    1 package com.atguigu.chapter04 2 3 object Test_Lazy { 4 def main(args: Array[String]): Unit = { 5 l ...

  10. scala入门输出helloworld

    1 object HelloScala{ 2 def main(args : Array[String]){ 3 println("hello scala") 4 } 5 } He ...