תחי ישראל - אין לנו ארץ אחרת

תחי ישראל -אין לנו ארץ אחרת

פונקציות מקבצות של SQL

מחבר:
בתאריך:

פונקציות מקבצות (Aggregate functions) מחזירות מידע אודות קבוצות של רשומות. לדוגמה, מספר השורות שמחזירה השאילתה, ממוצע עמודה מסוימת, וערכים מינימליים ומקסימליים בעמודה.

הדוגמאות במדריך זה מבוססות על טבלת SQL שאותה ניתן להוריד מהקישור המצורף:

להורדה

 

COUNT()

אם נרצה לקבל את מספר הרשומות בטבלה נשתמש בפונקציה- COUNT() , עם שם עמודה . לדוגמה,

SELECT COUNT( * )
FROM `workers`

והתוצאה בהתאם:

COUNT(*)
13

כמו לכל עמודה רגילה, ניתן לתת גם לעמודה שהיא תוצאה של פונקציות מקבצות, שם ידידותי באמצעות AS:

SELECT COUNT( * ) AS count
FROM `workers`

והתוצאה בהתאם:

count
13

כשמשתמשים בפונקציות מקבצות, צריך לשים לב לכך ש-NULL הוא לא אפס, אלא העדר ערך. המשמעות של זה היא רבה מפני שפונקציות מקבצות לא יתחשבו ברשומות שערכם NULL. לדוגמה, כשנריץ את הפונקציה COUNT() על העמודה num_childs, הפונקציה תחזיר רק את מספר השורות שאינן NULL. נריץ את השאילתה:

SELECT COUNT( num_childs ) 
FROM `workers`

שתחזיר:

COUNT(num_childs)
11

11 כמספרם של העמודות שאינם NULL.

 

פונקציות מקבצות נוספות

פונקציות מקבצות מועילות נוספות הם AVG, שמחזיר את ממוצע העמודה שעליה הוא פועל.

SELECT AVG( `num_childs` ) 
FROM `workers`

והתוצאה:

AVG(`num_childs`)
2.0

הפונקציה SUM() מחזירה את סכום העמודה. לדוגמה:

SELECT SUM( `num_childs` ) 
FROM `workers`

והתוצאה:

SUM( `num_childs` )
22

22 הוא סך כל הילדים של כל עובדי החברה.

הפונקציות MIN ו-MAX מחזירות את הערך המינימלי והמקסימלי בהתאמה. לדוגמה:

SELECT MIN(`num_childs`),MAX(`num_childs`)
FROM `workers`

והתוצאה בהתאם:

MIN( `num_childs` ) MAX( `num_childs` )
0 4

 

הפקודה GROUP BY

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

SELECT `num_childs` , COUNT( * ) AS count
FROM `workers` 
GROUP BY `num_childs`

והתוצאה:

num_childs count
4 2
3 2
2 3
1 2
0 2

 

שימוש ב- HAVING

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


SELECT `num_childs` , COUNT( * ) AS count
FROM `workers`
GROUP BY `num_childs`
HAVING `num_childs` <= 3

והתוצאה:

num_childs count
3 2
2 3
1 2
0 2

 

מה מספר הקבוצות בשאילתה?

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

SELECT COUNT( DISTINCT `num_childs` ) AS num_childs
FROM `workers`

והתוצאה:

num_childs
5

5 קבוצות.

במדריך הבא נלמד על תת-שאילתה של SQL

לכל מדריכי ה- mySQL

 

 

אהבתם? לא אהבתם? דרגו!

0 הצבעות, ממוצע 0 מתוך 5 כוכבים

 

 

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

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

שימו לב! הסקריפטים במדריכים מיועדים למטרות לימוד בלבד. כשאתם עובדים על הפרויקטים שלכם אתם צריכים להשתמש בספריות וסביבות פיתוח מוכחות, מהירות ובטוחות.

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

השימוש שלך באתר מהווה ראייה להסכמתך עם הכללים והתקנות שנוסחו בהסכם תנאי השימוש.

הוסף תגובה חדשה

 

 

ענה על השאלה הפשוטה הבאה כתנאי להוספת תגובה:

מתי הוקמה המדינה?

 

תמונת המגיב

דניאל AJ בתאריך: 22.04.2022

תודה רבהה בזכותך הצלחתי להבין את הנושא של Group By !!