【九月打卡】第20天 MySQL8.0 窗口函数
2022/9/26 4:17:09
本文主要是介绍【九月打卡】第20天 MySQL8.0 窗口函数,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
第一板块:玩转MySQL8.0新特性,5-1;5-2;5-3,董旭阳
第二,三板块:
什么叫窗口函数?
窗口的概念非常重要,它可以理解为记录集合,窗口函数也就是在满足某种条件的记录集合上执行的特殊函数。对于每条记录都要在此窗口内执行函数,有的函数随着记录不同,窗口大小都是固定的,这种属于静态窗口;有的函数则相反,不同的记录对应着不同的窗口,这种动态变化的窗口叫滑动窗口。 窗口函数和普通聚合函数也很容易混淆,二者区别如下: 聚合函数是将多条记录聚合为一条;而窗口函数是每条记录都会执行,有几条记录执行完还是几条。 聚合函数也可以用于窗口函数中,这个后面会举例说明。
窗口函数举例:
下面例子中,row_number()over(partition by user_no order by amount desc)这部分都属于窗口函数,它的功能是显示每个用户按照订单金额从大到小排序的序号。 按照功能划分,可以把MySQL支持的窗口函数分为如下几类: 序号函数:row_number() / rank() / dense_rank() 分布函数:percent_rank() / cume_dist() 前后函数:lag() / lead() 头尾函数:first_val() / last_val() 其他函数:nth_value() / nfile()
2.序号函数
序号函数——row_number() / rank() / dense_rank()。 用途:显示分区中的当前行号 使用场景:希望查询每个用户订单金额最高的前三个订单
3.分布函数
分布函数——percent_rank()/cume_dist()。 percent_rank() 用途:和之前的RANK()函数相关,每行按照如下公式进行计算: (rank - 1) / (rows - 1) 其中,rank为RANK()函数产生的序号,rows为当前窗口的记录总行数。 应用场景:没想出来……感觉不太常用,看个例子吧↓
第四板块:
这篇关于【九月打卡】第20天 MySQL8.0 窗口函数的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-04-01JPA不识别MySQL的枚举类型
- 2024-03-30mysql数据库表卡死解决方法
- 2024-03-15MySQL多数据源笔记5-ShardingJDBC实战
- 2024-03-11natural join mysql
- 2024-03-11关于VS2017,VS2015 中利用 EF使用Mysql 不显示数据源问题解决方案
- 2024-02-26mysql 阿里云xb后缀备份文件恢复-icode9专业技术文章分享
- 2024-02-22docker mysql 5.7
- 2024-02-18从 20 多套 MySQL 到 1 套 TiDB丨骏伯网络综合运营管理平台应用实践
- 2024-02-07mysql 外键索引入门介绍,为什么工作中很少有人使用?
- 2024-01-19你真的了解MySQL日期函数吗?