开窗函数,也叫OLAP(Online Anallytical Processing,联机分析处理),可以对数据库数据进行实时分析处理。

开窗函数本质上一种特殊的聚合函数。我们知道聚合函数是对满足条件的行 执行计算并返回一个值。而开窗函数是针对满足条件的行进行运算,结果会返回在所有参与计算的行上。

注意,因为where子句中不能使用窗口函数,而窗口函数本质上还是个聚合函数,所以,where子句中不能使用聚合函数。

聚合函数如sum.avg,count,max,min都可以作为聚合函数,除此之外,还有专用的开窗函数,如序号函数rank, dense_rank, row_number和前后函数lag、lead等。

区分开窗函数和普通聚合函数的关键字是OVER。当普通聚合函数sum等后面加上over()时,就表示对结果集中的所有行进行聚合运算,并把结果返回到每一行中。因此,开窗函数的运算是不改变原始数据的行数。

over关键字用来指定函数执行的窗口范围,如果后面括号中什么都不写,则意味着窗口包含满足条件的所有行,开窗函数基于所有行进行计算

over中有三个参数可以用来设置窗口的范围

(1)partition by:按照指定字段进行分区,开窗函数在不同的分区内分别执行。分区所依据的字段可以是多个,不同字段间使用逗号隔开。

(2)order by:按照指定字段进行排序,开窗函数将按照排序后的记录顺序进行编号和计算。可以和partition by子句配合使用,也可以单独使用。

(3)range|rows:当前分区的一个子集,用来定义子集的规则,通常用来作为滑动窗口使用。

关注微信公众号可查看全文并获取腾讯游戏的练习题

举报/反馈

方知数据

258获赞 135粉丝
认识数据,洞察数据,方知数据
关注
0
0
收藏
分享