LAG, LEAD और Time-Series Patterns
LAG और LEAD से हर row की पिछली या अगली sibling से तुलना कीजिए और period-over-period deltas बनाइए।
LAG, LEAD और Time-Series Patterns, CoddyKit पर SQL Academy का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह SQL Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। SQL Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
LAG और LEAD: पीछे / आगे देखना
ये विंडो में पड़ोसी पंक्तियों तक पहुँचते हैं:
LAG(col, n, default)— वर्तमान पंक्ति से n पंक्तियाँ पहले का मानLEAD(col, n, default)— वर्तमान पंक्ति से n पंक्तियाँ बाद का मान
पिछली पंक्ति
एक ही उपयोगकर्ता के प्रत्येक ऑर्डर की तुलना पिछले ऑर्डर से करें:
SELECT id, user_id, created_at, total,
LAG(total) OVER (
PARTITION BY user_id ORDER BY created_at
) AS prev_total
FROM orders;दिन-प्रतिदिन का अंतर
पिछले दिन से अंतर:
SELECT day, revenue,
revenue - LAG(revenue) OVER (ORDER BY day) AS delta
FROM daily_revenue
ORDER BY day;वर्ष-दर-वर्ष
मासिक क्रम पर 12 के ऑफ़सेट के साथ LAG:
SELECT month, revenue,
LAG(revenue, 12) OVER (ORDER BY month) AS prev_year_revenue,
revenue / NULLIF(LAG(revenue, 12) OVER (ORDER BY month), 0) - 1 AS yoy
FROM monthly_revenue;अंतराल पहचानना
जिन दिनों का डेटा गायब है, उन्हें खोजें:
WITH d AS (
SELECT day, LAG(day) OVER (ORDER BY day) AS prev_day FROM daily_signups
)
SELECT day, prev_day, day - prev_day AS gap_days
FROM d
WHERE day - prev_day > 1;सत्र-विभाजन
जब अंतर एक सीमा से अधिक हो जाए, तब पंक्तियों को सत्रों में समूहित करें:
WITH gaps AS (
SELECT user_id, ts,
CASE WHEN ts - LAG(ts) OVER (PARTITION BY user_id ORDER BY ts)
> INTERVAL '30 min'
THEN 1 ELSE 0 END AS new_session
FROM events
)
SELECT user_id, ts,
SUM(new_session) OVER (PARTITION BY user_id ORDER BY ts) AS session_id
FROM gaps;समूह का पहला और अंतिम
FIRST_VALUE और LAST_VALUE विंडो की सीमाएँ प्राप्त करते हैं:
SELECT id, total,
FIRST_VALUE(total) OVER (PARTITION BY user_id ORDER BY created_at) AS first_order,
LAST_VALUE(total) OVER (PARTITION BY user_id ORDER BY created_at
ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS last_order
FROM orders;
-- LAST_VALUE needs the explicit frame, otherwise default frame ends at current row.NTH_VALUE
विभाजन में Nवें मान को चुनें:
SELECT id,
NTH_VALUE(total, 2) OVER (
PARTITION BY user_id ORDER BY total DESC
ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
) AS second_largest
FROM orders;समय-श्रृंखला का डिफ़ॉल्ट मान
LAG का तीसरा तर्क तब डिफ़ॉल्ट मान होता है, जब पिछली पंक्ति मौजूद न हो:
SELECT day, revenue,
revenue - LAG(revenue, 1, 0) OVER (ORDER BY day) AS delta
FROM daily_revenue;
-- delta on first day = revenue itself (vs NULL)स्वयं-JOIN का समतुल्य
आप LAG को स्वयं-JOIN के रूप में लिख सकते हैं, लेकिन वह धीमा और अधिक अव्यवस्थित होगा। हमेशा विंडो फ़ंक्शन को प्राथमिकता दें।
प्रदर्शन
विंडो फ़ंक्शन विभाजन में एक बार आगे बढ़ते हैं। मुख्य बाधा क्रमबद्ध करना है — जहाँ संभव हो, ORDER BY वाले स्तंभों पर अनुक्रमणिका बनाएँ।
पुनरावलोकन
LAG और LEAD पंक्ति-दर-पंक्ति तुलना सक्षम करते हैं।
- विभाजन के भीतर पिछली/अगली पंक्ति
- अंतर, अवधि-दर-अवधि तुलना, सत्र-विभाजन
- सीमाओं के लिए FIRST_VALUE/LAST_VALUE
त्वरित जाँच
आप दिन-प्रतिदिन के राजस्व में परिवर्तन निकालना चाहते हैं। कौन-सा विंडो फ़ंक्शन उपयोग करेंगे?
एआई शिक्षक के साथ SQL सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 46
- पाठ
- 183
अक्सर पूछे जाने वाले प्रश्न
क्या “LAG, LEAD और Time-Series Patterns” पाठ निःशुल्क है?
हाँ—“LAG, LEAD और Time-Series Patterns” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और SQL Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। SQL Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“LAG, LEAD और Time-Series Patterns” में मैं क्या सीखूँगा?
LAG और LEAD से हर row की पिछली या अगली sibling से तुलना कीजिए और period-over-period deltas बनाइए। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ SQL Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या SQL Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर SQL Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।
“LAG, LEAD और Time-Series Patterns” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस SQL Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर SQL Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- OVER, PARTITION BY, ORDER BY
- ROW_NUMBER, RANK, DENSE_RANK
- LAG, LEAD और Time-Series Patterns
- Running Totals और Moving Averages