פונקציות צבירה
חלק מהיחידה יסודות במסלול ה-SQL של Coddy. שיעור 68 מתוך 72.
עם OVER (ORDER BY ...), פונקציות צבירה כמו AVG() או MAX() מחושבות על פני השורות עד לשורה הנוכחית, כולל שורות שיש להן אותו ערך כמו שלה בעמודה ORDER BY. בלי ORDER BY בתוך OVER, הן מחושבות על פני כל השורות, ולכן כל שורה מקבלת אותו ערך.
לדוגמה, נוכל לחשב את ההכנסה המרבית שקיבלנו עד לכל תקופת סיום:
| month | revenue | region |
| 4 | 40 | East |
| 5 | 20 | East |
| 6 | 60 | West |
| 7 | 55 | West |
| 8 | 61 | East |
SELECT month, revenue, MAX(revenue) OVER (ORDER BY month ASC) as max_revenue
from table1הפעולה תחזיר:
| חודש | הכנסות | max_revenue |
| 4 | 40 | 40 |
| 5 | 20 | 40 |
| 6 | 60 | 60 |
| 7 | 55 | 60 |
| 8 | 61 | 61 |
בחודשים 4 ו־5 ההכנסה המרבית היא 40, בחודשים 6 ו־7 היא 60, ובחודש 8 היא 61. הסיבה לכך היא שכאשר הוא מוצא הכנסה חדשה וגבוהה יותר, הוא מסיר את הקודמת ומשתמש בגבוהה ביותר שנמצאה עד כה.
כך תיראה הפונקציה AVG():
SELECT month, revenue, AVG(revenue) OVER (ORDER BY month ASC) as avg_revenue
from table1| חודש | הכנסות | avg_revenue |
| 4 | 40 | 40 |
| 5 | 20 | 30 |
| 6 | 60 | 40 |
| 7 | 55 | 43.75 |
| 8 | 61 | 47.2 |
נוכל גם לקבץ את החישובים שלנו לפי קטגוריות מסוימות באמצעות PARTITION BY. לדוגמה:
SELECT month, revenue, region,
MAX(revenue) OVER (PARTITION BY region ORDER BY month ASC) as max_revenue
FROM table1היה נותן לנו:
| month | revenue | region | max_revenue |
| 4 | 40 | East | 40 |
| 5 | 20 | East | 40 |
| 6 | 60 | West | 60 |
| 7 | 55 | West | 60 |
| 8 | 61 | East | 61 |
כעת הערך המרבי מחושב בנפרד עבור כל אזור. אזור המזרח ואזור המערב שומרים כל אחד באופן עצמאי על הערך המרבי המצטבר שלו.
אתגר
קלטבלאות ועמודות זמינות:
books:book,page,words
עבור כל ספר, הציגו את שם הספר, את מספר העמודים הכולל שלו, את מספר המילים בכל עמוד, וחשבו:
- את המספר המרבי של מילים שנמצאו בעמוד כלשהו בספר
- את מספר המילים הממוצע לעמוד עבור הספר כולו
- את ההפרש בין מספר המילים בעמוד הנוכחי למספר המילים הממוצע לעמוד בספר
הציגו את התוצאות ממוינות לפי הספר ומספר העמוד.
החזירו את העמודות הבאות:
bookpagewordsmax_words_in_bookavg_words_per_pagediff_from_avg
נסו בעצמכם
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות
2תנאים
יסודות התנאיםמילת המפתח ANDמילת המפתח ORמילת המפתח NOTשילוב של תנאים מרוביםסוגרייםערכים בוליאניים3פורמט החזרה ספציפי
ערכי Nullמיון תוצאות – חלק 1מיון תוצאות – חלק 2סיכום – חברת אבטחת סייברהגבלת מספר הרשומותסיכום – מפעל כלי רכב6אתגרי מבוא
חזרה – בחירות לפרלמנטחזרה – מעצר חשוד בידי המשטרהחזרה – כלי משקה בברחזרה – מהנדסים עמודות חדשות9טבלאות מרובות
JOIN בסיסי חלק 1JOIN בסיסי חלק 2סיכום – JOINJOIN עצמיסיכום – JOIN עצמיאיחוד (UNION)פישוט שאילתות באמצעות מילת המפתח WITHסיכום – שאילתות WITHסיכום – קבלן נדל״ן12פונקציות חלון חלק 2
פונקציות RANK ו-DENSE_RANKסיכום – RANK ו-DENSE_RANKפונקציית NTILEפונקציות צבירהקריטריון ROWS ו-RANGEתרגלו בעצמכם: SQL אונליין