האם זה אפשרי ב SQL

האם זה אפשרי ב SQL

שלום לכולם יש לי טבלה של שמות אנשים וכתובות אני רוצה להריץ שאילתא שתחזיר לי כמה רשומות יש מירושלים ת"א וחיפה וכו´ האם זה אפשרי לבצע ב SQL שאילתא שתחזיר טבלה עם שדה של שם העיר ושדה של מס´ כולל לדוגמה: עיר | סה"כ --------------- חיפה | 300 ירושלים | 235 תל אביב | 890
 
כמובן - בעזרת COUNT ו GROUP BY

אם השדה של שם העיר הוא city_name, הכתובת הוא address, והטבלה היא my_table:
select count(address), city_name from my_table group by city_name​
 
תודה רבה מאוד, ועוד שאלה אחת

אלון תודה רבה מאוד בדיוק מה שביקשתי, פתרת לי את הבעייה אולי תוכל להסביר לי יותר את המשמעות של הרכיב GROUP BY עדיין לא הצלחתי להבין מה הוא עושה ומתי משתמשים בו תודה רבה
 
GROUP BY

כשמתמשים בפונקציות כמו SUM, MIN, MAX, AVG וכו´ מקבלים תוצאה של כל הטבלה - סכום של הכל, ממוצע של הכל וכד´. בהרבה מקרים אנחנו רוצים לחלק את הטבלה למקטעים ולקבל את תוצאת הפונקציה לכל מקטע. למשל, אם יש טבלה של אנשים בערים, במקום לדעת כמה אנשים יש בטבלה (COUNT) אנחנו רוצים לדעת כמה אנשים יש בכל עיר - אז עושים GROUP BY ע"פ העיר. בשאילתה של GROUP BY יכולים להיות רק שדות שמופעלת עליהם פונקציית aggregate (מהסוג שדיברתי עליהן למעלה), או השדה שעל פיו עושים GROUPING. שאילתה כזאת היא לא חוקית:
SELECT x, y, sum(z) FROM t GROUP BY x​
מכיוון שהשדה y הוא לא חלק מההקבצה (GROUPING), וגם אין פונקציה שמופעלת עליו. בשביל לתת תנאי על ההקבצה משתמשים ב HAVING. מה הכוונה תנאי? בהקשר לדוגמא ממקודם - נגיד שנרצה לקבל את מספר האנשים בכל עיר רק בערים שיש בהן מעל 1000 איש - לא נוכל לכתוב את זה עם WHERE, אלא ב HAVING, בצורה כזאת:
SELECT city, COUNT(people) FROM citypeople GROUP BY city HAVING COUNT(people)>1000​
שים להבחנה בין שימוש ב WHERE לשימוש ב HAVING - ב WHERE נשתמש אם אנחנו רוצים לעשות תנאי על כל הנתונים, למשל במקרה הזה אם היה שדה מדינה והיינו רוצים נתונים רק ממדינה מסוימת, היינו מוסיפים WHERE STATE=1. אם אנחנו רוצים תנאי על ההקבצה, נשתמש ב HAVING.
 
עוד נקודה אחת...

תודה רבה על עזרתך אך האם ניתן לבצע בשאילתא אחת כמה GROUP BY ואסביר את כוונתי יש לי טבלה עם מספר שדות שמכילים ערך בוליאני TRUE OR FALSE אני רוצה לבצע שאילתא שתחזיר לי כמה פעמים מופיע TRUE בכל השדות הבוליאנים לאחר שקראתי את תשובתך הקודמת אני יודע לעשות זאת באמצעות GROUP BY לכל שדה באמצעות שאילתא נפרדת, אך האם אפשר לבצע זאת בשאילתא אחת לכל השדות הבוליאנים ?? ושוב, תודה רבה
 
למעלה