首页 > 其他分享 >185. 部门工资前三高的所有员工

185. 部门工资前三高的所有员工

时间:2023-06-07 09:23:56浏览次数:57  
标签:name tb1 Employee 员工 前三高 departmentId 185 Department id

【题目】

表: Employee

+--------------+---------+
| Column Name  | Type    |
+--------------+---------+
| id           | int     |
| name         | varchar |
| salary       | int     |
| departmentId | int     |
+--------------+---------+
Id是该表的主键列。
departmentId是Department表中ID的外键。
该表的每一行都表示员工的ID、姓名和工资。它还包含了他们部门的ID。

 

表: Department

+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| id          | int     |
| name        | varchar |
+-------------+---------+
Id是该表的主键列。
该表的每一行表示部门ID和部门名。

 

公司的主管们感兴趣的是公司每个部门中谁赚的钱最多。一个部门的 高收入者 是指一个员工的工资在该部门的 不同 工资中 排名前三 。

编写一个SQL查询,找出每个部门中 收入高的员工 。

以 任意顺序 返回结果表。

查询结果格式如下所示。

 

示例 1:

输入:
Employee 表:
+----+-------+--------+--------------+
| id | name  | salary | departmentId |
+----+-------+--------+--------------+
| 1  | Joe   | 85000  | 1            |
| 2  | Henry | 80000  | 2            |
| 3  | Sam   | 60000  | 2            |
| 4  | Max   | 90000  | 1            |
| 5  | Janet | 69000  | 1            |
| 6  | Randy | 85000  | 1            |
| 7  | Will  | 70000  | 1            |
+----+-------+--------+--------------+
Department  表:
+----+-------+
| id | name  |
+----+-------+
| 1  | IT    |
| 2  | Sales |
+----+-------+
输出:
+------------+----------+--------+
| Department | Employee | Salary |
+------------+----------+--------+
| IT         | Max      | 90000  |
| IT         | Joe      | 85000  |
| IT         | Randy    | 85000  |
| IT         | Will     | 70000  |
| Sales      | Henry    | 80000  |
| Sales      | Sam      | 60000  |
+------------+----------+--------+
解释:
在IT部门:
- Max的工资最高
- 兰迪和乔都赚取第二高的独特的薪水
- 威尔的薪水是第三高的

在销售部:
- 亨利的工资最高
- 山姆的薪水第二高
- 没有第三高的工资,因为只有两名员工

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/department-top-three-salaries
【思想】

开窗函数 先排序,再筛选

注意开窗函数允许并列的写法 dense_rank()

【代码】

SELECT department Department,Employee,Salary from
(select tb1.id id,tb1.name Employee,tb1.salary Salary,tb1.departmentId departmentId,
tb2.id department_Id,tb2.name department,
dense_rank() over(partition by departmentId order by salary desc) rk
from Employee tb1 join Department tb2
on tb1.departmentId=tb2.id) AS a
WHERE a.rk<=3
order by Salary desc,department asc

 

标签:name,tb1,Employee,员工,前三高,departmentId,185,Department,id
From: https://www.cnblogs.com/End1ess/p/17462330.html

相关文章

  • 基于JAVA的springboot+vue人事管理系统、员工工资管理系统,附源码+数据库+论文+PPT
    1、项目介绍考虑到实际生活中在人事管理方面的需要以及对该系统认真的分析,将系统权限按管理员和员工这两类涉及用户划分。(a)管理员;管理员使用本系统涉到的功能主要有:首页,个人中心,员工管理,部门管理,员工考勤管理,请假申请管理,加班申请管理,员工工资管理,招聘计划管理,员工培训管理,部......
  • 案例补充:员工注册登录系统实现
    案例补充:员工注册登录系统实现whileTrue:print("""1.注册2.登录""")cmd=input('请输入你的选择:').strip()#cmd的验证ifcmd=='1':whileTrue:#1.接收用户名和密码......
  • 关于员工管理系统的实现
    关于员工管理系统的实现***用到的知识点【1】os模块os就是“operatingsystem”的缩写,顾名思义,os模块提供的就是各种Python程序与操作系统进行交互的接口。通过使用os模块,一方面可以方便地与操作系统进行交互,另一方面也可以极大增强代码的可移植性。#本次用到的......
  • 案例补充:员工管理系统实现
    员工管理系统实现#1.如何打印让用户直接看到带序号的功能#定义一个列表来存储添加的用户数据user_data_list=[]#{'user_id':1,'username':'kevin','age':20,'salary':2000},{'user_id':2,'username':'kevin','age&......
  • 商业智能 (BI) 对企业中每个员工的 5 大好处
    众所周知,商业智能(BI)是探索企业数据价值的强大工具,能够帮助企业做出明智的决策、提高绩效并获得竞争优势。但BI工具与企业中的个体有什么关联,又能带来哪些好处呢?为什么说商业智能BI工具对公司中的每个人都很重要?我们来一一介绍下,商业智能BI工具为企业中的每位员工所带......
  • 商业智能 (BI) 对企业中每个员工的 5 大好处
    众所周知,商业智能(BI)是探索企业数据价值的强大工具,能够帮助企业做出明智的决策、提高绩效并获得竞争优势。但BI工具与企业中的个体有什么关联,又能带来哪些好处呢?为什么说商业智能BI工具对公司中的每个人都很重要?我们来一一介绍下,商业智能BI工具为企业中的每位员工所带......
  • 三个博弈-巴什博奕、威佐夫博弈、尼姆博弈。acm博弈算法笔记HDU 2149,1850,1527
    博弈论(一)、acm博弈基础算法BashGame,NimGame和WythoffGame(即巴什博奕、尼姆博弈、威佐夫博弈)Bash  Game: 同余理论Nim   Game: 异或理论WythoffGame: 黄金分割(二)、三个博弈。1、巴什博奕。只有一堆n个物品,两个人轮流从这堆物品中取物, 规定每次至少取一个,......
  • 商业智能 (BI) 对企业中每个员工的 5 大好处
    本文由葡萄城技术团队于博客园原创并首发。葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。众所周知,商业智能(BI)是探索企业数据价值的强大工具,能够帮助企业做出明智的决策、提高绩效并获得竞争优势。但BI工具与企业中的个体有什么关联,又能带来哪些好处......
  • 苹果公司限制员工使用AI工具ChatGPT
    ​      导读:苹果公司最近发布了一份内部备忘录,禁止员工使用生成式AI平台(包括ChatGPT和GitHub的Copilot等)用于工作任务。 本文字数:600,阅读时长大约:2分钟 苹果公司最近发布了一份内部备忘录,禁止员工使用生成式AI平台(包括ChatGPT和GitHub的Copilot等)用于工作任务。这......
  • 关于员工管理系统的实现
    关于员工管理系统的实现***用到的知识点【1】os模块os就是“operatingsystem”的缩写,顾名思义,os模块提供的就是各种Python程序与操作系统进行交互的接口。通过使用os模块,一方面可以方便地与操作系统进行交互,另一方面也可以极大增强代码的可移植性。#本次用到的......