LAG 函数

简介

LAG 函数用于获取当前行的前一行或指定行数的行数据。通过使用 LAG 函数,您可以轻松地访问窗口内的前一行数据,以便进行计算或比较。

语法

LAG(expr[,offset[,default]]) OVER ([partition_clause] orderby_clause)

参数说明

  • expr
    expr
    (任意类型): 需要获取前一行的表达式。
  • offset
    offset
    (可选,
    bigint
    bigint
    类型常量,默认为 1): 表示从当前行向前移动的行数。当值为 0 时,表示当前行;当值为正数时,表示向前移动的行数;当值为负数时,表示向后移动的行数。
  • default
    default
    (可选,与
    expr
    expr
    类型相同的常量,默认为
    null
    null
    ): 当
    offset
    offset
    超出窗口边界时使用的默认值。

返回结果

返回与

expr
expr
相同的数据类型。

使用示例

  1. 获取前一行的数据:

SELECT a, b, LAG(b) OVER (PARTITION BY a ORDER BY b) as prev_b FROM VALUES ('A', 2), ('A', 1), ('B', 3), ('A', 1) tab(a, b);

结果:

A 1 null A 1 1 A 2 1 B 3 null

  1. 获取前两行的数据:

SELECT a, b, LAG(b, 2) OVER (PARTITION BY a ORDER BY b) as prev_b FROM VALUES ('A', 2), ('A', 1), ('B', 3), ('A', 1) tab(a, b);

结果:

A 1 null A 2 null A 2 1 B 3 null

  1. 使用默认值:

SELECT a, b, LAG(b, 1, 0) OVER (PARTITION BY a ORDER BY b) as prev_b FROM VALUES ('A', 2), ('A', 1), ('B', 3), ('A', 1) tab(a, b);

结果:

A 1 0 A 1 1 A 2 1 B 3 0

总结

LAG 函数是一个非常实用的工具,可以帮助您轻松地访问窗口内的前一行数据。通过调整 offset 和 default 参数,您可以灵活地获取所需的数据。在实际应用中,LAG 函数可以用于计算移动平均、累积和等统计指标。

联系我们
预约咨询
微信咨询
电话咨询