什么是窗口函数

窗口函数分为聚合函数和分析函数:

分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是:对于每个组返回多行,而聚合函数对于每个组只返回一行。

聚合函数:

COUNT、SUM、MIN、MAX、AVG

分析函数:前三个常用

ROW_NUMBER() 从1开始,按照顺序,生成分组内记录的序列

RANK() 生成数据项在分组中的排名,排名相等会在名次中留下空位

DENSE_RANK() 生成数据项在分组中的排名,排名相等会在名次中不会留下空位

CUME_DIST 小于等于当前值的行数/分组内总行数。比如,统计小于等于当前薪水的人数,所占总人数的比例

PERCENT_RANK 分组内当前行的RANK值-1/分组内总行数-1

NTILE(n) 用于将分组数据按照顺序切分成n片,返回当前切片值,如果切片不均匀,默认增加第一个切片的分布。NTILE不支持ROWS BETWEEN,比如 NTILE(2) OVER(PARTITION BY cookieid ORDER BY createtime ROWS BETWEEN 3 PRECEDING AND CURRENT ROW)。

over从句:用来添加条件

使用PARTITION BY语句,使用一个或者多个原始数据类型的列 

使用PARTITION BY与ORDER BY语句,使用一个或者多个数据类型的分区或者排序列

窗口从句条件(窗口子句):

ROWS BETWEEN * AND *

RANGE BETWEEN * AND *

PRECEDING:往前

FOLLOWING:往后

CURRENT ROW:当前行

UNBOUNDED:无界限(起点或终点)

UNBOUNDED PRECEDING:表示从前面的起点

UNBOUNDED FOLLOWING:表示到后面的终点

sum(sales) OVER(PARTITION BY user_type ORDER BY sales asc ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)

你可能感兴趣的:(什么是窗口函数)