Menu
Coddy logo textTech

פונקציות LEAD ו-LAG

חלק מהיחידה יסודות במסלול ה-SQL של Coddy. שיעור 61 מתוך 72.

הפונקציות LEAD ו־LAG מאפשרות לנו לגשת לערך של השורה הנוכחית בהיסט של n צעדים לאחור או n צעדים קדימה.

לדוגמה, אם נרצה לחשב את היחס בין ההכנסה של חברה בשורה הנוכחית לבין ההכנסה שלה לפני חודש, נוכל לחלץ את הערך מהחודש הקודם:

idrevenuemonth
15325
24926
33937
47238
SELECT id, revenue, LAG(revenue, 1) OVER (ORDER BY MONTH) as prev_month_revenue
FROM table1 ORDER BY id

פעולה זו תיצור את הטבלה הבאה:

idrevenueprev_month_revenue
1532 
2492532
3393492
4723393

כך נוכל לחשב את היחס prev_month_revenue/revenue.

אם במקום זאת נשתמש בפונקציה LEAD, היא תיקח את ההכנסה של החודש הבא מכל שורה:

SELECT id, revenue, LEAD(revenue, 1) OVER (ORDER BY MONTH) as next_month_revenue
FROM table1 ORDER BY id
idrevenuenext_month_revenue
1532492
2492393
3393723
4723 
challenge icon

אתגר

קל

טבלאות ועמודות זמינות:

  • air_conditioners: id, efficiency, strength, month

השווה את היעילות של כל מזגן ליעילות של המזגן הקודם.

כתוב שאילתה שמציגה את היעילות של כל מזגן לצד היעילות של המזגן הקודם שהותקן (בהתבסס על id). חשב גם את ההפרש ביעילות בין המזגן הנוכחי לקודם. מיין את התוצאה לפי id ו-efficiency בסדר עולה.

עמודות הפלט הצפויות:

  • id
  • efficiency
  • previous_efficiency (באמצעות LAG)
  • efficiency_difference (היעילות הנוכחית - היעילות הקודמת)

לבסוף, עטוף את השאילתה וסנן את השורה הראשונה, שבה previous_efficiency (ולכן גם efficiency_difference) ריק, כלומר NULL:

SELECT * FROM (
    -- Your query here
)
WHERE previous_efficiency IS NOT NULL

נסו בעצמכם

quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה יסודות

תרגלו בעצמכם: SQL אונליין