الانتقال إلى المحتوى الرئيسي
تعيد قيمةً جرى تقييمها في الصف الموجود عند إزاحة فعلية محددة قبل الصف الحالي ضمن الإطار المرتّب. تشبه هذه الدالة lagInFrame، لكنها تستخدم دائمًا الإطار ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING. البنية
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])
لمزيد من التفاصيل حول بنية دوال النافذة، راجع: دوال النافذة - البنية. المعاملات
  • x — اسم العمود.
  • offset — الإزاحة المطلوب تطبيقها. (U)Int*. (اختياري - 1 افتراضيًا).
  • default — القيمة التي تُعاد إذا تجاوز الصف المحسوب حدود إطار النافذة. (اختياري - القيمة الافتراضية لنوع العمود عند عدم تحديده).
القيمة المعادة
  • القيمة المحسوبة عند الصف الواقع على إزاحة فعلية محددة قبل الصف الحالي ضمن الإطار المرتَّب.
مثال يستعرض هذا المثال البيانات التاريخية لسهم معيّن، ويستخدم الدالة lag لحساب الفرق اليومي والتغير النسبي في سعر إغلاق السهم.
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 │
   └────────────┴────────┴────────────────────┴───────┴────────────────┘
آخر تعديل في ٢٥ يونيو ٢٠٢٦