1,开窗函数:
over(),指定分析函数工作的数据窗口大小,这个数据窗口大小可能会随着行的变化而变化。
什么境况下用到这个函数呢,可以用来统计数据大小,和聚合函数一起使用,下面通过一个案例来操作一下:
1,首先准备数据:
ja,2017-01-01,10
ny,2017-01-02,15
ja,2017-02-03,23
ny,2017-01-04,29
ja,2017-01-05,46
ja,2017-04-06,42
ny,2017-01-07,50
ja,2017-01-08,55
mart,2017-04-08,62
mart,2017-04-09,68
neil,2017-05-10,12
mart,2017-04-11,75
neil,2017-06-12,80
mart,2017-04-13,94
2,创建一张普通表
create table tb_orders(
name string ,
cdate string ,
money double
)
row format delimited fields terminated by ',';
3,把数据导入进去:
load data local inpath ' 表路径' into table 表名;
4,开始分析数据通过开窗函数:
1,select *,sum(money)
over(partition by name order by cdate rows between current row and 1 following) as tb_fenxi from tb_orders ;
1,n preceding ,往前n行数据
2,n following ,往后n行数据
3,unbounded preceding ,表示从前面的起点
4,unbounded following ,表示到后面的终点
5,lag,往前第n行数据,select * ,lag(cdate) over(partition by )
6,lead,往后第n行数据