MySQL 8.0 窗口函数框架用法-爱可生( 四 )


再次带上范围来看下另外一个例子:
mysql:ytt_80>selectid,r1,sum(r1)over(partitionbyidorderbyr1ascrangebetween1precedingand1following)aswf_resultfromt1whereid=1;
+------+------+-----------+
|id|r1|wf_result|
+------+------+-----------+
|1|1|3|
|1|2|6|
|1|3|5|
|1|9|19|
|1|10|19|
|1|15|15|
+------+------+-----------+
6rowsinset(0.00sec)
这个例子over子句里指定一个边界范围 , 也就是对每行值减1和加1后对应的记录来求和 。 比如第一行:r1=1,1-1=0,1+1=2 , 表t1没有r1=0的记录 , 但是有r1=2的记录 , 所以第一行的窗口求和结果为3;再来看看r1=10的这行 , 10-1=9,10+1=11 , 表t1里有r1=9的记录 , 没有r1=11的记录 , 所以这里的求和结果为9+10=19.
这里举例说明了MySQL8.0窗口函数frame子句的用法 , 可能使用场景比较稀少 , 不过可以收藏起来以备不时之需 。
关键字:爱可生、MySQL数据库、数据库运维管理、开源数据库解决方案