דילוג לתוכן המרכזי
מודול 13 · שיעור 1 מתוך 449/57 בקורס~15 min
שיעורי מודול (1/4)

מבוא וסעיף OVER

מבוא וסעיף OVER

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

כאן נכנסות לתמונה פונקציות החלון. הם מאפשרים לך להריץ חישובים מצטברים (כגון סכומים או ממוצעים) _ תוך שמירה על השורות המקוריות_.

פסקת OVER()

מילת המפתח הקסומה היא OVER(). הוא אומר למסד הנתונים שיש להתייחס לפונקציה המצטברת (למשל SUM, AVG, COUNT) כפונקציית חלון, לחשב על כל מערך התוצאות (ה"חלון") הגלובלי אך להחיל אותה ולהחזיר אותה בכל שורה בודדת.

SQL
SELECT
  order_id,
  total_amount,
  AVG(total_amount) OVER() AS global_average
FROM orders;

בדוגמה זו, אנו שומרים על כל הזמנה בודדת, אך לכל שורה יש גם עמודה global_average עם הממוצע של כל ההזמנות. שימושי מאוד, למשל, כדי למדוד כמה הזמנה חורגת מהממוצע!

פעילות גופנית#sql.m13.l1.e1
ניסיונות: 0טוען...

בחר את העמודה 'מחיר' מטבלת 'מוצרים'. הוסף עמודה בשם 'global_max_price' המכילה את המחיר המקסימלי שחושב עם פונקציית חלון על כל הטבלה.

טוען עורך...
הצג רמז

השתמש ב-MAX(מחיר) בשילוב עם OVER().

הפתרון זמין לאחר 3 ניסיונות

פעילות גופנית#sql.m13.l1.e2
ניסיונות: 0טוען...

חלץ 'id', 'price' והוסף את המחיר הממוצע הכולל ('global_avg') מטבלת 'מוצרים'.

טוען עורך...
הצג רמז

פשוט הוסף AVG(מחיר) OVER().

הפתרון זמין לאחר 3 ניסיונות