logo

SQL GROUP BY

הסעיף של SQL GROUP BY משמש לסידור נתונים זהים לקבוצות המבוססות על עמודה אחת או יותר. הוא משמש בדרך כלל עם פונקציות מצטברות כמו COUNT() SUM() AVG() MAX() ו-MIN() כדי לבצע חישובים על כל קבוצת נתונים.

פירות_תמונה' title=

דוּגמָה: ראשית נעשה לִיצוֹר בסיס נתונים וטבלה של SQL הדגמה עליהם נשתמש בפקודה GROUP BY.

עובדים' loading='lazy' title=

שְׁאֵלָה:



SELECT Department SUM(Salary) AS TotalSalary FROM Employees GROUP BY Department;

תְפוּקָה:

קבוצה לפי שאילתה' loading='lazy' title=

תַחבִּיר:

SELECT column1 aggregate_function(column2) FROM table_name WHERE condition GROUP BY column1 column2;
  • צבירת_פונקציה: פונקציה המשמשת לצבירה, למשל. SUM() AVG() COUNT().
  • table_name: שם הטבלה שממנה נבחרו נתונים.
  • מַצָב: תנאי אופציונלי לסינון שורות לפני קיבוץ (בשימוש עם WHERE).
  • עמודה 1 עמודה 2: עמודות שעליהן מוחל הקיבוץ.

דוגמאות של GROUP BY

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

גרפ' loading='lazy' title=

דוגמה 1: קבץ לפי עמודה בודדת

כאשר אנו מקבצים לפי עמודה בודדת משולבות שורות עם אותו ערך באותה עמודה. לדוגמה, קיבוץ לפי נושאים מראה כמה תלמידים רשומים בכל נושא.

שְׁאֵלָה:

SELECT subject COUNT(*) AS Student_Count FROM Student GROUP BY subject;

תְפוּקָה:

grp-1' loading='lazy' title=

הֶסבֵּר: כל נושא מופיע פעמיים בטבלה כך שהספירה עבור מתמטיקה ומדעים באנגלית היא 2.

דוגמה 2: קבץ לפי מספר עמודות

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

שְׁאֵלָה:

SELECT subject year COUNT(*) FROM Student GROUP BY subject year;

תְפוּקָה:

תלמידים-גרפ' loading='lazy' title=

הסבר: תלמידים באותו נושא ושנה מקובצים יחד. מכיוון שכל צמד נושא-שנה מתרחש פעמיים, הספירה היא 2 עבור כל קבוצה.

HAVING סעיף בסעיף GROUP BY

משפט HAVING משמש לסינון תוצאות לאחר קיבוץ, במיוחד כאשר עובדים עם פונקציות מצטברות כמו SUM() COUNT() או AVG(). שלא כמו WHERE הוא מחיל תנאים על נתונים מקובצים.

emp' loading='lazy' title=

דוגמה 1: סינון לפי שכר כולל

בשאילתה זו אנו מקבצים עובדים לפי שמם ומציגים רק את אלה ששכרם הכולל גדול מ-50000.

SELECT NAME SUM(sal) FROM Emp GROUP BY name HAVING SUM(sal)>50000; 

תְפוּקָה

גיל-1' loading='lazy' title=

הֶסבֵּר : בתוצאה מופיעים רק עובדים ששכרם הכולל עולה על 50000.

דוגמה 2: סינון לפי שכר ממוצע

בשאילתה זו אנו מקבצים עובדים לפי גיל ומציגים רק את קבוצות הגיל שבהן השכר הממוצע הוא מעל 60000.

SELECT age AVG(sal) AS Average_Salary FROM emp GROUP BY age HAVING AVG(sal) > 60000;

תְפוּקָה:

פלט-1' loading='lazy' title=

הֶסבֵּר: שאילתה זו מקבצת עובדים לפי גיל ומחשבת שכר ממוצע לכל גיל. מוצגות רק קבוצות הגיל שבהן השכר הממוצע גבוה מ-60,000.

צור חידון