OceanBase 的 Oracle 模式支持 OVER 子句,也即常说的窗口函数。本文介绍窗口函数的语法。
OceanBase 的 Oracle 模式支持 OVER 子句,也即常说的窗口函数。一个窗口包含三个组成部分:
-
分区规范,用于将输入行分裂到不同的分区中。这个过程和
GROUP BY
子句的分裂过程相似。
-
排序规范,用于决定输入数据行在窗口函数中执行的顺序。
-
窗口边界,指定计算数据的窗口边界。默认值为
RANGE UNBOUNDED PRECEDING
。这个边界包含当前分区中所有从开始到目前行的所有数据。
OceanBase 数据库中窗口函数的语法如下。
有关窗口函数的详细信息,请参见《OceanBase 数据库 SQL 参考(Oracle 模式)》中的 函数 章节。
CREATE OR REPLACE FUNCTION analytic_function([ arguments ]) OVER ( [ PARTITION BY { expr[, expr ]… | ( expr[, expr ]… ) } ] [ORDER [ SIBLINGS ] BY{ expr | position | c_alias } [ ASC | DESC ] [ NULLS FIRST | NULLS LAST ] [, { expr | position | c_alias } [ ASC | DESC ][ NULLS FIRST | NULLS LAST ]]… [ { ROWS | RANGE } { BETWEEN { UNBOUNDED PRECEDING | CURRENT ROW | value_expr { PRECEDING | FOLLOWING } } AND{ UNBOUNDED FOLLOWING | CURRENT ROW | value_expr { PRECEDING | FOLLOWING } } | { UNBOUNDED PRECEDING | CURRENT ROW| value_expr PRECEDING}} ] ] )