SQL 方言通

首页 / 窗口

窗口函数对照

窗口函数在 MaxCompute、Hologres、StarRocks、Doris、Hive、Spark SQL、Flink SQL 中的写法对照,共 4 个函数。其中 0 个函数在部分引擎中需要改写或没有对应函数。

目录:first_value · lag · last_value · lead

FIRST_VALUE 窗口第一个值

FIRST_VALUE 返回窗口中第一行的值。七个引擎都同名可用,差异在“忽略 NULL”的写法:MaxCompute、Doris、Hive 和 Spark 传第二个布尔参数,StarRocks 用 IGNORE NULLS,Hologres 和 Flink 的文档没有对应写法。

引擎支持写法
MaxCompute支持FIRST_VALUE(expr[, ignore_nulls]) OVER (...)
Hologres支持FIRST_VALUE(value) OVER (...)
StarRocks支持FIRST_VALUE(expr [IGNORE NULLS]) OVER (...)
Doris支持FIRST_VALUE(expr[, ignore_null]) OVER (...)
Hive支持first_value(col[, skip_nulls]) OVER (...)
Spark SQL支持first_value(expr[, isIgnoreNull]) OVER (...)
Flink SQL支持FIRST_VALUE(expression)

LAG 取前第 N 行的值

LAG(expr[, offset[, default]]) 返回当前行前面第 offset 行的值,越界时返回 default。七个引擎写法相同,差异在 default 是否必须是常量、是否支持 IGNORE NULLS,以及 offset 能否为 0。

引擎支持写法
MaxCompute支持LAG(expr[, offset[, default]]) OVER (...)
Hologres支持LAG(value[, offset[, default]]) OVER (...)
StarRocks支持LAG(expr [IGNORE NULLS] [, offset[, default]]) OVER (...)
Doris支持LAG(expr[, offset[, default]]) OVER (...)
Hive支持lag(col[, n[, default]]) OVER (...)
Spark SQL支持lag(input[, offset[, default]]) OVER (...)
Flink SQL支持LAG(expression[, offset][, default])

LAST_VALUE 窗口最后一个值

LAST_VALUE 返回窗口中最后一行的值。七个引擎都同名可用,差异在“忽略 NULL”的写法:MaxCompute、Doris、Hive 和 Spark 传第二个布尔参数,StarRocks 用 IGNORE NULLS,Hologres 和 Flink 的文档没有对应写法。LAST_VALUE 还要注意默认窗口只到当前行。

引擎支持写法
MaxCompute支持LAST_VALUE(expr[, ignore_nulls]) OVER (...)
Hologres支持LAST_VALUE(value) OVER (...)
StarRocks支持LAST_VALUE(expr [IGNORE NULLS]) OVER (...)
Doris支持LAST_VALUE(expr[, ignore_null]) OVER (...)
Hive支持last_value(col[, skip_nulls]) OVER (...)
Spark SQL支持last_value(expr[, isIgnoreNull]) OVER (...)
Flink SQL支持LAST_VALUE(expression)

LEAD 取后第 N 行的值

LEAD(expr[, offset[, default]]) 返回当前行后面第 offset 行的值,越界时返回 default。七个引擎写法相同,差异在 default 是否必须是常量、是否支持 IGNORE NULLS,以及 offset 能否为 0。

引擎支持写法
MaxCompute支持LEAD(expr[, offset[, default]]) OVER (...)
Hologres支持LEAD(value[, offset[, default]]) OVER (...)
StarRocks支持LEAD(expr [IGNORE NULLS] [, offset[, default]]) OVER (...)
Doris支持LEAD(expr[, offset[, default]]) OVER (...)
Hive支持lead(col[, n[, default]]) OVER (...)
Spark SQL支持lead(input[, offset[, default]]) OVER (...)
Flink SQL支持LEAD(expression[, offset][, default])

其他分类

最近核对: