# LAG

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 that 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

```sql
CREATE TABLE lag_example (a int, b int);

INSERT INTO lag_example VALUES(1,2),(2,2),(3,3),(4,3);

```

```sql
SELECT a, LAG(a) OVER(ORDER BY (a)) FROM lag_example;


```

```output

+------+---------------------------+
| a    | LAG(a) OVER(ORDER BY (a)) |
+------+---------------------------+
|    1 |                      NULL |
|    2 |                         1 |
|    3 |                         2 |
|    4 |                         3 |
+------+---------------------------+
```

```sql
SELECT a, LAG(a,2) OVER(ORDER BY (a)) FROM lag_example;


```

```output

+------+-----------------------------+
| a    | LAG(a,2) OVER(ORDER BY (a)) |
+------+-----------------------------+
|    1 |                        NULL |
|    2 |                        NULL |
|    3 |                           1 |
|    4 |                           2 |
+------+-----------------------------+
```

***

Modified at: February 16, 2023

Source: [/db/v9.1/reference/sql-reference/window-functions/lag/](https://docs.singlestore.com/db/v9.1/reference/sql-reference/window-functions/lag/)

(An index of the documentation is available at /llms.txt)
