Outdated Version

You are viewing an older version of this section. View current production version.

LAG

Value function. Returns an expression evaluated at some offset before the current row. If there is no such row returns NULL instead.

Syntax

LAG ( expression [, offset]) OVER (
    [PARTITION BY (col | expr), ...] 
    [ORDER BY (col | expr), ...]
)

Arguments

  • expression: any expression. This may be a column name, the result of another function, or a math operation
  • offset: A constant integer which specifies the number of rows before the current row to evaluate the expression. Defaults to 1 if not specified

Return Type

The result of expression

Examples

create table example (a int, b int);

insert into example values(1,2),(2,2),(3,3),(4,3);

select a,lag(a) over(order by (a)) from example;
+------+---------------------------+
| a    | lag(a) over(order by (a)) |
+------+---------------------------+
|    1 |                      NULL |
|    2 |                         1 |
|    3 |                         2 |
|    4 |                         3 |
+------+---------------------------+

select a,lag(a,2) over(order by (a)) from example;
+------+-----------------------------+
| a    | lag(a,2) over(order by (a)) |
+------+-----------------------------+
|    1 |                        NULL |
|    2 |                        NULL |
|    3 |                           1 |
|    4 |                           2 |
+------+-----------------------------+