פונקציות צבירה
שיעור 11 מתוך 13 בקורס SQL למתקדמים של Coddy.
פונקציות צבירה משמשות לחישוב AVG() או MAX() או כל פונקציית צבירה אחרת עד לשורה הנוכחית.
לדוגמה, נוכל לחשב את ההכנסה המרבית שהתקבלה עד לכל תקופת סיום:
| month | revenue |
| 4 | 40 |
| 5 | 20 |
| 6 | 60 |
| 7 | 55 |
| 8 | 61 |
SELECT month, revenue, MAX(revenue) OVER (ORDER BY month ASC) as max_revenue
from table1הפעולה תחזיר:
| month | revenue | max_revenue |
| 4 | 40 | 40 |
| 5 | 20 | 40 |
| 6 | 60 | 60 |
| 7 | 55 | 60 |
| 8 | 61 | 61 |
בחודשים 4 ו־5 ההכנסה המרבית היא 40, בחודשים 5 ו־6 ההכנסה היא 60, ובחודש 8 היא 61. הסיבה לכך היא שכאשר נמצאת הכנסה חדשה וגדולה יותר, ההכנסה הישנה נזרקת ומשתמשים בגדולה ביותר עד כה.
עבור הפונקציה AVG(), התוצאה תיראה כך:
SELECT month, revenue, AVG(revenue) OVER (ORDER BY month ASC) as avg_revenue
from table1| month | revenue | avg_revenue |
| 4 | 40 | 40 |
| 5 | 20 | 30 |
| 6 | 60 | 40 |
| 7 | 55 | 43.75 |
| 8 | 61 | 47.2 |
אתגר
קלבספרים יש עמודים רבים ובכל עמוד יש הרבה מילים.
באתגר הזה נחשב מדדים רבים ושונים על הספרים האלה.
אחזרו עבור כל ספר את המספר הכולל של המילים, את מספר המילים המרבי ואת מספר המילים המזערי, ואת מספר המילים הממוצע עד כל עמוד, וקראו לעמודות האלה: total_words, max_words, min_words, avg_words בהתאמה. בנוסף, דרגו את העמודים בדירוג צפוף (עבור כל ספר) לפי חישוב היחס: (avg_words-min_words)/(total_words-min_words) בסדר עולה עבור כל ספר, וקראו לעמודה זו ratio_rank. לבסוף, סדרו את התוצאה לפי book ואז לפי ratio_rank בסדר עולה.
נסו בעצמכם
כל השיעורים ביחידה SQL למתקדמים
תרגלו בעצמכם: קומפיילר Python אונליין