MySQL 8.0中窗口函数框架用法的介绍
Oracle提供了很多窗口函数,在做一些数据统计工作时,非常实用。MySQL中同样支持窗口函数,杨老师写的这篇文章《新特性解读 | MySQL 8.0 窗口函数框架用法》就介绍了一些。
窗口函数其实就是一个分组窗口内部处理每条记录的函数,这个窗口也就是之前聚合操作的窗口。不同的是,聚合函数是把窗口关闭,给一个汇总的结果;而窗口函数是把窗口打开,给分组内每行记录求取对应的聚合函数值或者其他表达式的结果。
这篇文章重点关注窗口函数内的 frame 子句:frame 子句用来把窗口内的记录按照指定的条件打印出来,跟在 partition 和 order by 子句后面。frame 子句的语法为,
frame_clause:<br>frame_units frame_extent<br>frame_units:<br>{ROWS | RANGE}<br><br>frame_extent:<br>{frame_start | frame_between}<br>frame_between:<br>BETWEEN frame_start AND frame_end<br>frame_start, frame_end: {<br>CURRENT ROW<br>| UNBOUNDED PRECEDING<br>| UNBOUNDED FOLLOWING<br>| expr PRECEDING<br>| expr FOLLOWING<br>}<br>