SQL架构

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

+----+-------+--------+--------------+
| Id | Name  | Salary | DepartmentId |
+----+-------+--------+--------------+
| 1  | Joe   | 70000  | 1            |
| 2  | Jim   | 90000  | 1            |
| 3  | Henry | 80000  | 2            |
| 4  | Sam   | 60000  | 2            |
| 5  | Max   | 90000  | 1            |
+----+-------+--------+--------------+

Department 表包含公司所有部门的信息。

+----+----------+
| Id | Name     |
+----+----------+
| 1  | IT       |
| 2  | Sales    |
+----+----------+

编写一个 SQL 查询,找出每个部门工资最高的员工。对于上述表,您的 SQL 查询应返回以下行(行的顺序无关紧要)。

+------------+----------+--------+
| Department | Employee | Salary |
+------------+----------+--------+
| IT         | Max      | 90000  |
| IT         | Jim      | 90000  |
| Sales      | Henry    | 80000  |
+------------+----------+--------+

解释:

Max 和 Jim 在 IT 部门的工资都是最高的,Henry 在销售部的工资最高。

方法一:

将题目分解。 第一步:首先不关注部门名称,找出每个部门工资最高的信息,得到表a:

select max(Salary) m,DepartmentId from Employee group by DepartmentId

第二步:然后与Employee 表联查找到每个工资最高的人员信息,得到表b:

select e.Name,e.Salary,e.DepartmentId from Employee e,a where e.Salary =a.m and e.DepartmentId =a.DepartmentId

第三步:对应上部门名称

select d.name Department,b.name Employee,Salary from b , Department d where b.DepartmentId =d.id;

虽然有点长,但是思路清晰,一般人都能想得到

执行用时 : 241 ms , 在所有 MySQL 提交中击败了 22.10% 的用户 内存消耗 : 0B , 在所有 MySQL 提交中击败了 100.00% 的用户

select d.name Department,b.name Employee,Salary from (select e.Name,e.Salary,e.DepartmentId from Employee e,(select max(Salary) m,DepartmentId from Employee group by DepartmentId) awhere e.Salary =a.m and e.DepartmentId =a.DepartmentId) b , Department d where
b.DepartmentId =d.id;

方法二:

select d.name as Department,e.name as Employee,e.salary
from employee e,department d
where e.departmentid=d.id
and (e.salary,e.departmentid) in (select max(salary),departmentid from employee group by departmentid);

方法三:

select d.Name as Department, e.Name as Employee, e.Salary
from Department d inner join Employee e on d.Id = e.DepartmentId
and e.Salary >= (select max(Salary) from Employee where DepartmentId = d.Id)

Leetcode -MySQL-184. 部门工资最高的员工相关推荐

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

    文章目录 1. 题目 2. 解题 1. 题目 Employee 表包含所有员工信息,每个员工有其对应的 Id, salary 和 department Id. +----+-------+------ ...

  2. LeetCode For SQL 184. 部门工资最高的员工 (分组 from嵌套)

    184. 部门工资最高的员工 # Write your MySQL query statement below-- 先找出每个部门最高薪资,显示出部门id.部门名称和薪资 -- 然后再通过这个新表,根 ...

  3. 184. 部门工资最高的员工

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

  4. LeetCode MySQL 185. 部门工资前三高的所有员工(dense_rank)

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

  5. 文巾解题 184. 部门工资最高的员工

    1 题目描述 2 解题思路 先在employee表中找到每个部门工资最高是多少钱(DS) 然后在employee表中找工资等于最高工资的员工.(联立employee表中的E) 最后通过Departme ...

  6. 【sql】184. 部门工资最高的员工

    题目: 力扣 表: Employee +--------------+---------+ | 列名          | 类型    | +--------------+---------+ | i ...

  7. mysql查询每个部门工资最高的员工信息_SQL简单面试题:查询每个部门工资最高的前10位员工...

    前段时间同事突然甩了一个SQL面试题给我,题目是需要查询每个部门工资最高的前10位员工.想着查每个部门的最高还好,用max语句就可以搞定,这是要取前十.... 快速构建了一下思路,查了一下有没有类似的 ...

  8. Leetcode-184. 部门工资最高的员工

    题目链接: Leetcode-184 Employee 表包含所有员工信息,每个员工有其对应的 Id, salary 和 department Id. +----+-------+--------+- ...

  9. 编写一个 SQL 查询,找出每个部门工资最高的员工。

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

最新文章

  1. Install GIT in Ubuntu
  2. html模块化标签,jq load()方法实现html 模块化。
  3. CF986A Fair
  4. python王者归来 pdf_OpenStack开源云:王者归来 PDF 下载
  5. leetcode113. 路径总和 II(dfs)
  6. xmind可以画流程图吗_新娘妆可以自己画吗?临夏化妆学校告诉你答案!
  7. 大数据之-Hadoop3.x_MapReduce_自定义分区案例---大数据之hadoop3.x工作笔记0112
  8. vs code c语言json文件配置,解析VScode在Windows环境下c_cpp_properties.json文件配置问题(推荐)...
  9. nodejs创建http服务器
  10. [POJ1961 Period]
  11. Tutorials 使用窗口功能分析信息
  12. spss进行偏相关分析
  13. mysql数据库配置步骤,MySQL数据库安装配置步骤详解
  14. Vin码车架号识别技术已经很成熟了
  15. android的WebView加载html内容图片超出屏幕范围
  16. Maven的阿里云镜像配置
  17. 端口号是什么以及常见端口号
  18. GBase 8s HAC集群简介
  19. 浅谈企业拥有门户网站的重要性
  20. 个人项目:中小学数学卷子自动生成程序

热门文章

  1. jquery表格自动补全插件——datagrid
  2. 字符串 读取西门子_【必学技能】自己动手——基于C#实现手机APP远程访问西门子PLC...
  3. ES5(二)——替换this 之call()、apply()和bind()
  4. STL(二)——向量vector
  5. Java通过引用操作对象的“共享”特性
  6. java同步方法必须是静态的吗_Java基础知识之synchronized同步方法、代码块、静态方法、静态代码块的区别...
  7. 8.0强行转换后变成了7_如何在服务器上安装SSL证书,让你的网站变成https
  8. 浏览器内核之WebKit 架构与模块
  9. Unity GPU Instancing的使用尝试
  10. ecshop3.0.0注入