קבץ לפי ו- HAVING

הושלם

כדי לקבל תובנות עמוקות יותר ולארגן טוב יותר נתונים בתוך מסד נתונים, SQL מציג את המשפטים ורבי GROUP BY העוצמה HAVING .

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

קבץ לפי

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

העוצמה האמיתית GROUP BY של מתגלה כאשר נעשה בה שימוש עם פונקציות צבירה. פונקציות צבירה, כגון COUNT(), , וביצוע SUM()AVG()MIN() חישובים בקבוצות אלה, המאפשרות לך ליצור סטטיסטיקות סיכום עבור כל קטגוריה. MAX()

לדוגמה, באפשרותך להשתמש בפונקציה GROUP BY כדי לחשב: -total SUM() המכירות עבור כל קטגוריית מוצר, -average AVG() של מוצרים מכל ספק, -number של COUNT() לקוחות בכל עיר.

SELECT category_id, AVG(price)
FROM sales.products
GROUP BY category_id;

שאילתה זו מאחזרת את המחיר הממוצע של מוצרים בתוך כל קטגוריה על-ידי קיבוץ שורות הטבלה sales.products בהתאם ל- category_id. על-ידי החלת AVG() הפונקציה price על העמודה, השאילתה מחשבת את הערך הממוצע של מחירים עבור כל המוצרים תחת כל ערך ייחודי category_id.

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

SELECT category_id
FROM sales.products
GROUP BY category_id;

שאילתה זו מקבץ את השורות category_id לפיהן מבלי לבצע כל צבירה, פשוט מפרטת כל קיימות category_id נפרדות בטבלה sales.products .

לאחר

ב- SQL, WHERE לא ניתן להשתמש במשפט לסינון התוצאות של פונקציות צבירה.
כדי לסנן קבוצות שנוצרו על-ידי GROUP BY המשפט בהתבסס על תוצאות פונקציית צבירה, השתמש במשפט HAVING .
חשוב כפסוקית HAVINGWHERE עבור קבוצות: היא מאפשרת לך להחיל תנאים על הנתונים המסוכמים המופקים על-ידי פונקציות צבירה, ומאפשרת לך למקד את הניתוח כדי להתמקד בקבוצות רלוונטיות.

SELECT category_id, AVG(price)
FROM sales.products
GROUP BY category_id
HAVING AVG(price) > 30;

שאילתה זו מחשבת את ממוצע price המוצרים בתוך כל קטגוריה על-ידי קיבוץ שורות בטבלה sales.products בהתאם ל- category_id. לאחר מכן, הוא מסנן את התוצאות כדי לכלול רק את הקטגוריות שבהן הממוצע חורג price מ- 30 באמצעות המשפט HAVING .