Passer au contenu principal
Renvoie une valeur évaluée sur la ligne située à un décalage physique spécifié avant la ligne courante dans le cadre ordonné. Cette fonction est similaire à lagInFrame, mais utilise toujours le cadre ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING. Syntaxe
lag(x[, offset[, default]])
  OVER ([[PARTITION BY grouping_column] [ORDER BY sorting_column]] | [window_name])
FROM table_name
WINDOW window_name as ([[PARTITION BY grouping_column] [ORDER BY sorting_column])
Pour plus de détails sur la syntaxe des fonctions de fenêtre, voir : Fonctions de fenêtre - Syntaxe. Paramètres
  • x — Nom de colonne.
  • offset — Décalage à appliquer. (U)Int*. (Facultatif - 1 par défaut).
  • default — Valeur à renvoyer si la ligne calculée dépasse les limites de la frame de la fenêtre. (Facultatif - valeur par défaut du type de la colonne si omise).
Valeur renvoyée
  • Valeur évaluée sur la ligne située à un décalage physique donné avant la ligne courante dans la frame ordonnée.
Exemple Cet exemple examine les données historiques d’une action donnée et utilise la fonction lag pour calculer la différence d’un jour à l’autre ainsi que la variation en pourcentage du cours de clôture de l’action.
Query
CREATE TABLE stock_prices
(
    `date`   Date,
    `open`   Float32, -- opening price
    `high`   Float32, -- daily high
    `low`    Float32, -- daily low
    `close`  Float32, -- closing price
    `volume` UInt32   -- trade volume
)
Engine = Memory;

INSERT INTO stock_prices FORMAT Values
    ('2024-06-03', 113.62, 115.00, 112.00, 115.00, 438392000),
    ('2024-06-04', 115.72, 116.60, 114.04, 116.44, 403324000),
    ('2024-06-05', 118.37, 122.45, 117.47, 122.44, 528402000),
    ('2024-06-06', 124.05, 125.59, 118.32, 121.00, 664696000),
    ('2024-06-07', 119.77, 121.69, 118.02, 120.89, 412386000);
Query
SELECT
    date,
    close,
    lag(close, 1, close) OVER (ORDER BY date ASC) AS previous_day_close,
    COALESCE(ROUND(close - previous_day_close, 2)) AS delta,
    COALESCE(ROUND((delta / previous_day_close) * 100, 2)) AS percent_change
FROM stock_prices
ORDER BY date DESC
Response
   ┌───────date─┬──close─┬─previous_day_close─┬─delta─┬─percent_change─┐
1. │ 2024-06-07 │ 120.89 │                121 │ -0.11 │          -0.09 │
2. │ 2024-06-06 │    121 │             122.44 │ -1.44 │          -1.18 │
3. │ 2024-06-05 │ 122.44 │             116.44 │     6 │           5.15 │
4. │ 2024-06-04 │ 116.44 │                115 │  1.44 │           1.25 │
5. │ 2024-06-03 │    115 │                115 │     0 │              0 │
   └────────────┴────────┴────────────────────┴───────┴────────────────┘
Dernière modification le 25 juin 2026