什么时候用开窗函数?
开窗函数常结合聚合函数使用,一般来讲聚合后的行数要少于聚合前的行数,但是有时我们既想显示聚集前的数据,
又要显示聚集后的数据,这时我们便引入了窗口函数。
窗口函数的语法
UDAF() over (PARTITION By col1,col2 order by col3 窗口子句(rows between .. and ..)) AS 列别名
注意:PARTITION By后可跟多个字段,order By只跟一个字段。
over()的作用
over()决定了聚合函数的聚合范围,默认对整个窗口中的数据进行聚合,聚合函数对每一条数据调用一次。
例如:
select name, orderdate, cost, sum(cost) over()
from business;
partition by 子句
使用Partiton by子句对数据进行分区,可以用paritition by对区内的进行聚合。
例如:
select name, orderdate, cost, sum(cost) over(partition by name)
from business;
order by 子句
- 对分区中的数据进行排序。
- 确定聚合哪些行(默认从起点到当前行的聚合)。
例如:
select