一天一道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

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

相关推荐
最晚的py3 分钟前
聚类的评估方法
人工智能·算法·机器学习
业精于勤的牙7 分钟前
浅谈:算法中的斐波那契数(五)
算法·leetcode·职场和发展
液态不合群10 分钟前
查找算法详解
java·数据结构·算法
代码游侠11 分钟前
学习笔记——Linux进程间通信(IPC)
linux·运维·笔记·学习·算法
高洁0112 分钟前
DNN案例一步步构建深层神经网络(3)
python·深度学习·算法·机器学习·transformer
_dindong15 分钟前
笔试强训:Week -8
开发语言·c++·算法
LYFlied31 分钟前
【每日算法】LeetCode 105. 从前序与中序遍历序列构造二叉树
数据结构·算法·leetcode·面试·职场和发展
DanyHope37 分钟前
LeetCode 206. 反转链表:迭代 + 递归双解法全解析
算法·leetcode·链表·递归·迭代
NAGNIP40 分钟前
才发现TensorBoard是个可视化的神器!
算法
_dindong1 小时前
算法杂谈:回溯路线
数据结构·算法·动态规划·bfs·宽度优先