题目:

表: 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. 关于C++ 多态实现技术的深度解析(vfptr,vftable)

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

  2. drf(过滤、排序、异常)

    一. 过滤组件 1 内置过滤组件SearchFilter # 缺点: 外键字段的搜索操作将会抛出异常: Related Field got invalid lookup: icontains # 1) ...

  3. Vue3.0里为什么要用 Proxy API 替代 defineProperty API ?

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 一.Object.defineProperty 定义:Object.defineProperty() 方法会直接在一个对象上定义一个新属性 ...

  4. 记录--微信小程序,uniapp,H5端发送,显示emoji表情

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 小伙伴们,在开发中有没有遇到过发布帖子或者实时聊天需要发送到一些emoji表情的. 但是每当我们直接将emoji表情提交到后台的接口又会报 ...

  5. UEFI引导双系统安装archlinux后安装windows8.1,os-prober无法探测,生成grub.cfg没有windows

    1.os-prober无法探测 可能是os-prober未启用 启用os-prober: sudo vim /etc/default/grub 添加: GRUB_DISABLE_OS_PROBER=f ...

  6. Kylin Desktop V10部署达梦数据库(DM8)

    1.环境 处理器:飞腾D2000/8 E8C 内存:16GB 系统:银河麒麟桌面版操作系统(国防版)V10 达梦数据库:dm8_20231226_FTarm2000_kylin10_sp1_64 2. ...

  7. 20 JavaScript和HTML交互

    20 JavaScript和HTML交互 在HTML中可以直接在标签上给出一些事件的触发. 例如, 页面上的一个按钮. <input type="button" value= ...

  8. #点分治,树状数组#洛谷 5311 [Ynoi2011] 成都七中

    题目 给你一棵 \(n\) 个节点的树,每个节点有一种颜色,有 \(m\) 次查询操作. 查询操作给定参数 \(l\) \(r\) \(x\),需输出: 将树中编号在 \([l,r]\) 内的所有节点 ...

  9. npm 直接安装 GitHub/GitLab 仓库代码及 npm link 本地调试

    一.npm 直接安装 GitHub/GitLab 仓库代码 语法 npm install <git remote url> 示例 命令: npm i git@github.com:maze ...

  10. MFC程序隐藏托盘+右键关闭菜单

    背景介绍: 我的程序是启动后,默认就隐藏到托盘中,等待http请求后,显示界面.所以最小化到托盘的代码,我是写在初始化里面.     正文: 一.自定义消息 WM_SHOWTASK #define W ...