日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

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

發布時間:2024/7/5 数据库 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LeetCode MySQL 185. 部门工资前三高的所有员工(dense_rank) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 1. 題目
    • 2. 解題

1. 題目

Employee 表包含所有員工信息,每個員工有其對應的工號 Id,姓名 Name,工資 Salary 和部門編號 DepartmentId 。

+----+-------+--------+--------------+ | 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 | +----+----------+

編寫一個 SQL 查詢,找出每個部門獲得前三高工資的所有員工。

例如,根據上述給定的表,查詢結果應返回:

+------------+----------+--------+ | Department | Employee | Salary | +------------+----------+--------+ | IT | Max | 90000 | | IT | Randy | 85000 | | IT | Joe | 85000 | | IT | Will | 70000 | | Sales | Henry | 80000 | | Sales | Sam | 60000 | +------------+----------+--------+ 解釋:IT 部門中, Max 獲得了最高的工資, Randy 和 Joe 都拿到了第二高的工資, Will 的工資排第三。銷售部門(Sales)只有兩名員工, Henry 的工資最高,Sam 的工資排第二。

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/department-top-three-salaries
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。

2. 解題

# Write your MySQL query statement below select Department, Employee, Salary from (select d.Name Department, e.Name Employee, Salary,dense_rank() over(partition by d.Name order by Salary desc) rnkfrom Employee e left join Department don e.DepartmentId = d.Id ) t where rnk <= 3 and Department is not null

or

# Write your MySQL query statement below select Department, Employee, Salary from (select d.Name Department, e.Name Employee, Salary,dense_rank() over(partition by d.Name order by Salary desc) rnkfrom Employee e right join Department don e.DepartmentId = d.Id ) t where rnk <= 3 and Employee is not null

or 使用內連接,自動去除 null 的行

select Department, Employee, Salary from (select d.Name Department, e.Name Employee, Salary,dense_rank() over(partition by d.Name order by Salary desc) rnkfrom Employee e join Department don e.DepartmentId = d.Id ) t where rnk <= 3

我的CSDN博客地址 https://michael.blog.csdn.net/

長按或掃碼關注我的公眾號(Michael阿明),一起加油、一起學習進步!

總結

以上是生活随笔為你收集整理的LeetCode MySQL 185. 部门工资前三高的所有员工(dense_rank)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。