Hive SQL窗口函数:
核心语法主框架:
8-Select
1 -From (left table)
3- (join_type)join(right_table)
2- On
4--Where
5-Group by
6- With
7-Having
9-Order by
10-Limit
1、 sum()、avg()用于累计窗口函数
2、 row_number(),rank() 用于创建排序窗口函数
3、 ntile()分组查询窗口函数
4、 lag(),lead()偏析分析窗口函数
累计窗口函数:
sum(…) over(….) over的作用是指定累计的条件(字段)
eg1:
—2018年每月的支付总额和当年累计支付总额
Select a.month,
a.pay_amount,
sum(a.pay_amount) over (order by a.month)
from
(select month(dt) month,
Sum(pay_amount) pay_amount
From user_trade
Where year(dr)=2018
Group by month(dt))a;
1、 partition by 起到分组的作用(下述例子中先按照年份(2017,2018)分组,再每个组内按照月份排序),
2、Order by 按照什么进行排序进行累加, asc 升序,desc 降序,默认是升序;
Eg:
2017-2018年每月的支付总额和当年的累计总额
Select a.year,
a.month,
a.pay_amount,
sum(pay_amount) over(partition by a.year order by a.month)
# partition by的作用,数据按年份分组,不然排序中就会有 2018-01,2017-03
From
(select year(dt)year
Month(dt) month
Sum(pay_amount) pay_amount
From user_trade
Where year(dt) in (2017,2018)
Group by year(dt)
Month(dt) a);
常见错误:
A. 没有分组