Palavras em inglês e abreviações
lag = ficar atrás
Para que serve?
Compare valores adjacentes ou extremos do período.
Valor retornadoTipo conforme entrada
Sintaxe
LAG(value[, offset[, fallback]]) OVER ([PARTITION BY partition] ORDER BY order)
O que inserir em cada argumento?
| Argumento | Tipo / notação | Exemplo de entrada | Significado / valor padrão |
|---|
valueObrigatório | EXPRESSION | value / 42 / NULL | Valor ou coluna de tipo compatível. |
offsetOpcional | INTEGER | 1 / 0 / -1 | Positivo: linhas anteriores. +1 é a anterior; −1, a próxima. 0 é a atual; padrão 1. A direção segue ORDER BY dentro de OVER. |
fallbackOpcional | EXPRESSION | -1 / NULL | Retornado quando a linha não existe na partição; padrão NULL. Se a linha existe e seu valor é NULL, retorna NULL. |
partitionOpcional | EXPRESSION | department / user_id | Coluna de grupo em PARTITION BY; omitida, todas as linhas formam um grupo. |
orderObrigatório | ORDER BY EXPRESSION | value DESC / id | Ordenação em OVER ou cláusula de agregação, não argumento. |
SQL pronto para executar
Os dados estão incluídos. Não é preciso criar tabelas.
WITH data AS (
SELECT 1 AS id, 10 AS value
UNION ALL SELECT 2, NULL
UNION ALL SELECT 3, 30
)
SELECT id, value,
LAG(value, 1, -1) OVER (ORDER BY id) AS result
FROM data
ORDER BY id;
Resultado deste SQL
| id | value | result |
|---|
1 | 10 | -1 |
2 | NULL | 10 |
3 | 30 | NULL |
Antes de usar
Anterior/próxima seguem ORDER BY dentro de OVER: datas crescentes, próxima mais recente; decrescentes, mais antiga. Adicione um ID único para desempatar. Não cruza partições e conta linhas com NULL. No Snowflake, offset negativo inverte a direção. RESPECT NULLS conta linhas NULL; IGNORE NULLS as ignora. fallback só é usado sem linha de destino.
No outro dialeto BigQuery
LAG(value[, offset[, fallback]]) OVER ([PARTITION BY partition] ORDER BY order)
No BigQuery, offset é literal ou parâmetro inteiro não negativo; negativo/NULL gera erro. fallback é uma expressão constante compatível, usada apenas sem a linha de destino.
Referência oficial ↗