热线电话:13121318867

登录
2020-06-18 阅读量: 1105
mysql学习day4 开窗函数 以及习题讲解

一:开窗函数

不同的数据库中叫法不同,但用法一样。

写法:开窗函数名([<字段名><字段名>]) over([partition by<分组字段> <分组字段>] [order by <排序字段>[desc]] [< 滑动窗口>])

1:开窗函数是在满足某种条件的记录集合上执行的特殊函数。对于每条记录都要在此窗口内执行函数,有的函数随着记录不同,窗口大小都是固定的,这种属于静态窗口;有的函数则相反,不同的记录对应着不同的窗口,这种动态变化的窗口叫滑动窗口。开窗函数的本质还是聚合运算,只不过它更具灵活性,它对数据的每一行,都使用与该行相关的行进行计算并返回计算结果。

2:普通的聚合函数也可以用于开窗

3:普通的聚合函数是把多行计算成成一行

开窗函数是把每一行都进行计算,返回的结果也是在对应的行上,所以行数是不变的。

4:分区后还可以进行group by 聚合,

5:开窗函数中序号函数

row_number() 显示分区中不重复不间断的序号 (该函数为无参函数) (无法显示并列的情况,但其它函数可以)

dense_rank() 显示分区中重复不间断的序号

rank() 显示分区中重复间断的序号

6:where 字句中不能引用开窗函数

补充:

如果over中没有指定分区、排序和滑动窗口,默认计算的是结果集中所有的行

如果over中指定了分区、但没有指定排序和滑动窗口,默认计算的是分区内的所有行。

如果over中指定了分区和排序,没有指定滑动窗口,默认计算的是分区内的第一行到当前行。

二:题目讲解

解题方法有很多,但是在实际工作中,我们一般采用逻辑判断的方式来解决。





14.1913
2
关注作者
收藏
评论(0)

发表评论

暂无数据