Menu
CoddyTech

פונקציות צבירה

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

עם OVER (ORDER BY ...), פונקציות צבירה כמו AVG() או MAX() מחושבות על פני השורות עד לשורה הנוכחית, כולל שורות שיש להן אותו ערך כמו שלה בעמודה ORDER BY. בלי ORDER BY בתוך OVER, הן מחושבות על פני כל השורות, ולכן כל שורה מקבלת אותו ערך.
לדוגמה, נוכל לחשב את ההכנסה המרבית שקיבלנו עד לכל תקופת סיום:

monthrevenueregion
440East
520East
660West
755West
861East
SELECT month, revenue, MAX(revenue) OVER (ORDER BY month ASC) as max_revenue
from table1

הפעולה תחזיר:

חודשהכנסותmax_revenue
44040
52040
66060
75560
86161

בחודשים 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
44040
52030
66040
75543.75
86147.2

נוכל גם לקבץ את החישובים שלנו לפי קטגוריות מסוימות באמצעות PARTITION BY. לדוגמה:

SELECT month, revenue, region,
MAX(revenue) OVER (PARTITION BY region ORDER BY month ASC) as max_revenue
FROM table1

היה נותן לנו:

monthrevenueregionmax_revenue
440East40
520East40
660West60
755West60
861East61

כעת הערך המרבי מחושב בנפרד עבור כל אזור. אזור המזרח ואזור המערב שומרים כל אחד באופן עצמאי על הערך המרבי המצטבר שלו.

challenge icon

אתגר

קל

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

  • books: book, page, words

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

  1. את המספר המרבי של מילים שנמצאו בעמוד כלשהו בספר
  2. את מספר המילים הממוצע לעמוד עבור הספר כולו
  3. את ההפרש בין מספר המילים בעמוד הנוכחי למספר המילים הממוצע לעמוד בספר

הציגו את התוצאות ממוינות לפי הספר ומספר העמוד.

החזירו את העמודות הבאות:

  • book
  • page
  • words
  • max_words_in_book
  • avg_words_per_page
  • diff_from_avg

נסו בעצמכם

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

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

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

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