שיעורי מודול (1/4)
מבוא וסעיף OVER
מבוא וסעיף OVER
בשיעורים הקודמים ראינו כיצד להשתמש ב-GROUP BY כדי לצבור נתונים. עם זאת, ל-GROUP BY יש מגבלה עצומה: הוא מכווץ שורות. אם אתה מקבץ לפי עיר, אתה מקבל שורה בודדת לכל עיר ומאבד את הפרטים של הלקוחות הבודדים.
כאן נכנסות לתמונה פונקציות החלון. הם מאפשרים לך להריץ חישובים מצטברים (כגון סכומים או ממוצעים) _ תוך שמירה על השורות המקוריות_.
פסקת OVER()
מילת המפתח הקסומה היא OVER(). הוא אומר למסד הנתונים שיש להתייחס לפונקציה המצטברת (למשל SUM, AVG, COUNT) כפונקציית חלון, לחשב על כל מערך התוצאות (ה"חלון") הגלובלי אך להחיל אותה ולהחזיר אותה בכל שורה בודדת.
SELECT
order_id,
total_amount,
AVG(total_amount) OVER() AS global_average
FROM orders;בדוגמה זו, אנו שומרים על כל הזמנה בודדת, אך לכל שורה יש גם עמודה global_average עם הממוצע של כל ההזמנות. שימושי מאוד, למשל, כדי למדוד כמה הזמנה חורגת מהממוצע!
בחר את העמודה 'מחיר' מטבלת 'מוצרים'. הוסף עמודה בשם 'global_max_price' המכילה את המחיר המקסימלי שחושב עם פונקציית חלון על כל הטבלה.
הצג רמז
השתמש ב-MAX(מחיר) בשילוב עם OVER().
הפתרון זמין לאחר 3 ניסיונות
חלץ 'id', 'price' והוסף את המחיר הממוצע הכולל ('global_avg') מטבלת 'מוצרים'.
הצג רמז
פשוט הוסף AVG(מחיר) OVER().
הפתרון זמין לאחר 3 ניסיונות