文章目录
- 一、窗口函数
-
- 1、 窗口范围分为:基于值和基于行两种(用between and指定范围)。
-
- 1-1、基于行:unbounded preceding从第一行开始(负无穷),[num] preceding从前num行开始,current row从当前行开始,[num] followwing后的num行开始;[num] preceding 前num行结束,current tow当前行结束,[num] following后num行结束,unbounded following至末尾结束(正无穷);
- 1-2、基于值:`order by 排序时只能用整数型`,between [num1] preceding and [num2] preceding 基于范围时:取(当前值-num1到当前值+num2)
- 2、缺省
- 二、常用窗口函数
一、窗口函数
定义:能为每行数据划分一个窗口,然后对窗口范围内的数据进行计算,最后将计算结果给该行数据。
语法:select * ,函数(amount) over(窗口范围) total_amount from order_info;
1、 窗口范围分为:基于值和基于行两种(用between and指定范围)。
1-1、基于行:unbounded preceding从第一行开始(负无穷),[num] preceding从前num行开始,current row从当前行开始,[num] followwing后的num行开始;[num] preceding 前num行结束,current tow当前行结束,[num] following后num行结束,unbounded following至末尾结束(正无穷);
1-2、基于值:order by 排序时只能用整数型
,between [num1] preceding and [num2] preceding 基于范围时:取(当前值-num1到当前值+num2)
2、缺省
over()中的三个部分内容partition by 、 order by 、(row|range)between…and…均可省略不写。
2-1、partition by 省略不写
1. 表示不分区
2-2、order by 省略不写
1.表示不排序
2.通常rows方法都会用order by排序
3.当rows的范围是从第一行到最后一行,通常才会省略
4.当range方法没有用order by时,无法确定划分区域,后面的between...and无效,相当于从第一行到最后一行