一天一道Sql题(day04)

185. 部门工资前三高的所有员工 - 力扣(LeetCode)

思路:本题主要考察开窗函数的使用(官方答案未使用开窗,但是我觉得答案可能是在mysql8.0之前写的,当时还没有开窗函数)

先对Employee表增加一列不同部门下薪资的排名(pm),在关联Department查询出结果需要的字段即可。在这里排名时要使用dense_rank() 函数。

排名函数有三个:row_number()、rank()、dense_rank()

row_number(): 严格按照1234排序,相等的数据排名也是不同的

rank(): 1 2 2 4 5 6 6 8

dense_rank():1 2 2 3 4 5 5 6

sql:

复制代码
with e as (
    select name,salary,departmentId
    ,dense_rank() over(partition by departmentId order by salary desc) pm
    from Employee
)
select d.name as Department
,e.name as Employee
,e.salary 
from e,department d 
where e.departmentId=d.id and pm <=3

dense_rank() over(partition by departmentId order by salary desc) pm

会开窗的小伙伴都能看懂,不会的小伙伴建议去学一下开窗~

相关推荐
Zane199421 分钟前
暴力字符串匹配失配就要把文本指针往回拉,KMP凭什么能让它一直往前走
算法
Tim_101 小时前
【LeetCode】338、比特位计数
c++·算法·leetcode
木子算法1 小时前
不是重心也不是中点:费马—韦伯点、它的最优性条件与迭代求解
人工智能·算法·目标跟踪
tryxr2 小时前
矩阵的几种基础变换
java·数据结构·算法·矩阵
mmmmath_32 小时前
LeetCode.028.找出字符串中第一个匹配项的
数据结构·算法·leetcode
Selvaggia2 小时前
DMD(Distribution Matching Distillation,分布匹配蒸馏)
算法
Navigator_Z3 小时前
LeetCode //C - 1255. Maximum Score Words Formed by Letters
c语言·算法·leetcode
All for pursuit.3 小时前
【栈-4】739.每日温度
数据结构·c++·算法·leetcode
All for pursuit.3 小时前
【栈-5】84.柱状图中最大的矩形
数据结构·c++·算法·leetcode
wzdark3 小时前
数据压缩算法的时间复杂度与压缩率权衡4
算法