MYSQL中分析函数---(分析函数方法名字) OVER(PARTITION BY ...... ORDER BY ......)

背景
刷leetcode数据库题的时候,发现自己是真的菜
不管是知识面还是逻辑思路太僵硬了,脑袋没有开窍
真的是一杯茶一支烟一句SQL看一天
还是要不断的学习吧,今天总结一下常用分析函数的用法

首先分析一下over(partition by a order by b)这个函数

OVER(PARTITION BY Year ORDER BY Month DESC )
数据会根据Year字段进行分组,按照Month字段降序排列

效果图:
Alt
常用的分析函数很多很多:
1.row_number() over(partition by … order by …)
2.rank() over(partition by … order by …)
3.dense_rank() over(partition by … order by …)
4.count() over(partition by … order by …) 分组后的总数
5.max() over(partition by … order by …) 分组后的最大值
6.min() over(partition by … order by …) 分组后的最小值
7.sum() over(partition by … order by …) 分组后的求和
8.avg() over(partition by … order by …) 分组后平均值
9.first_value() over(partition by … order by …) 分组后第一个值
10.last_value() over(partition by … order by …) 分组后第二个值
11.lag() over(partition by … order by …) 取出前N行的数据
12.lead() over(partition by … order by …) 取出后N行的数据

在over前还加一个分析函数row_number()
效果图:
Alt
在over函数执行的基础上,还会根据Month进行不重复排序

Rank()和Dense_rank()区别
Rank()输出:
Alt
Dense_rank()输出:
Alt
可以看到rank()排序在相同参数保持一致排序后,后面元素还是保持原本排序
dense_rank()到后面的元素是跟随排序

Sum() over()

sum(score) over(partition by class_id order by score desc)
根据班级ID进行分组,成绩降序排列,再将成绩依次递增

效果图
在这里插入图片描述

还有一些函数,以后用到了在展示
学无止境,瑞思拜

  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值