sql 分区排序,查找人员本年最高工资与发工资时间

如果数据库中的记录是单位所有员工一年的奖金数,我想列出每个部门,每个员工,以及每个员工在一年中奖金最多的月份和金额,应该怎样写呢?
在这里插入图片描述
在这里插入图片描述
第一时间想到的是分组,根据部门和人员分组,max(工资)可以很容易拿到这三个参数,但是再拿时间就麻烦了

所以这里使用分区排序来拿

SELECT id,section,u_name,money,m_time,row_number() over (partition by section,u_name ORDER BY money desc) paixu from ceshi WHERE m_time>'2023-01-01';

在这里插入图片描述
重点row_number() over (partition by section,u_name ORDER BY money desc)
partition by后跟着的字段是分区字段,同一区再进行排序,与分组不同的是所有数据均有保留,分组后同一组最终只显示一条数据,分区则全部显示。

在使用 row_number() over()函数时候,over()里头的分组以及排序的执行晚于 where 、group by、 order by 的执行。
所以想实现效果的话再套一层select筛选下paixu=1的值就好了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

翎墨袅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值