מאמר זה מסביר את הסקירה המלאה של סעיף GROUP BY ו-ORDER BY. הם משמשים בעיקר לארגון נתונים המתקבלים על ידי שאילתות SQL. ההבדל בין הסעיפים הללו הוא אחד המקומות הנפוצים ביותר להיתקע בעת למידה SQL . ההבדל העיקרי ביניהם הוא זה משפט GROUP BY ישים כאשר אנו רוצים להשתמש בפונקציות צבירה ליותר מקבוצה אחת של שורות. סעיף ORDER BY ישים כאשר אנו רוצים לקבל את הנתונים המתקבלים על ידי שאילתה בסדר המיון . לפני ביצוע ההשוואה, תחילה נכיר את סעיפי SQL אלו.
הזמנה לפי סעיף
הסעיף ORDER BY משמש בשאילתות SQL כדי למיין את הנתונים המוחזרים על ידי שאילתה בסדר עולה או יורד. אם נשמיט את סדר המיון, הוא ממיין את התוצאה המסוכמת בסדר עולה כברירת מחדל. ניתן להשתמש במשפט ORDER BY, כמו במשפט GROUP BY, בשילוב עם המשפט SELECT. ASC מציין סדר עולה, בעוד DESC מציין סדר יורד.
להלן התחביר לשימוש בסעיף ORDER BY במשפט SQL:
scanner.next java
SELECT expressions FROM tables [WHERE conditions] ORDER BY expression [ ASC | DESC ];
הבה נבין כיצד פועל סעיף ה-ORDER BY בעזרת הדוגמה הבאה. נניח שיש לנו שולחן מפתח שמכיל את הנתונים הבאים:
אנו יכולים לראות שתוצאות אלו אינן מוצגות בצורה מאורגנת. נניח שאנו רוצים לארגן תוצאות בסדר עולה או יורד על סמך ה טור המדינה . במקרה זה, נצטרך את הפקודה ORDER BY כדי לקבל את התוצאה הרצויה. נוכל לעשות זאת על ידי ביצוע הפקודה באופן הבא:
mysql> SELECT D_name, D_state, D_salary FROM developers ORDER BY D_state ASC;
להלן הפלט שבו נקבל את התוצאות הרצויות:
GROUP BY סעיף
הסעיף GROUP BY משמש בשאילתות SQL כדי לארגן נתונים בעלי אותם ערכי תכונה. בדרך כלל, אנו משתמשים בו עם המשפט SELECT . תמיד צריך לזכור שעלינו למקם את משפט GROUP BY אחרי משפט WHERE. בנוסף, הוא מתקדם לפני סעיף ה-ORDER BY.
לעתים קרובות אנו יכולים להשתמש בסעיף זה בשיתוף פעולה עם פונקציות מצטברות כמו SUM, AVG, MIN, MAX ו-COUNT כדי להפיק דוחות סיכום ממסד הנתונים. חשוב לזכור שהתכונה בסעיף זה חייבת להופיע בסעיף SELECT, לא תחת פונקציה צבירה. אם נעשה זאת, השאילתה תהיה שגויה. כתוצאה מכך, תמיד נעשה שימוש במשפט GROUP BY בשילוב עם משפט SELECT. השאילתה עבור פסקת GROUP BY היא שאילתה מקובצת, והיא מחזירה שורה בודדת עבור כל אובייקט מקובץ.
gimp שמור כ-jpeg
להלן התחביר לשימוש בסעיף GROUP BY במשפט SQL:
SELECT column_name, function(column_name) FROM table_name WHERE condition GROUP BY column_name;
הבה נבין כיצד פועל סעיף GROUP BY בעזרת דוגמה. כאן נדגים אותו עם אותה טבלה.
נניח שאנחנו רוצים לדעת השכר הממוצע של מפתחים במדינה מסוימת ולארגן את התוצאות בסדר יורד על סמך עמודת המצב. במקרה כזה, נצטרך גם את הפקודה GROUP BY וגם את הפקודה ORDER BY כדי לקבל את התוצאה הרצויה. נוכל לעשות זאת על ידי ביצוע הפקודה באופן הבא:
mysql> SELECT D_state, avg(D_salary) AS salary FROM developers GROUP BY D_state ORDER BY D_state DESC;
שאילתה זו יצרה תחילה תוצאת ביניים שקיבצה את המדינה. לאחר מכן, ה AVG הפונקציה מתבצעת בכל קבוצת מצבים, לאחר מכן מיון את התוצאה בסדר יורד, ולבסוף, נקבל את התוצאות הרצויות כפי שמוצג להלן:
הבדלים עיקריים בין GROUP BY ל-ORDER BY
להלן ההבחנות העיקריות בין סעיף הקבוצה לפי וסעיף לפי סדר לפי:
- הסעיף Group By משמש לקיבוץ נתונים על בסיס אותו ערך בעמודה ספציפית. הסעיף ORDER BY, לעומת זאת, ממיין את התוצאה ומציג אותה בסדר עולה או יורד.
- חובה להשתמש בפונקציית הצבירה כדי להשתמש בקבוצה לפי. מצד שני, אין חובה להשתמש בפונקציה המצטברת כדי להשתמש ב- Order By.
- התכונה לא יכולה להיות תחת הצהרת GROUP BY תחת פונקציית צבירה, בעוד שהתכונה יכולה להיות תחת הצהרת ORDER BY תחת פונקציית צבירה.
- פסקת Group By שולטת בהצגת tuples כלומר הקיבוץ מתבצע על סמך הדמיון בין ערכי התכונה של השורה. לעומת זאת, פסקת ה-ORDER BY שולטת בהצגת העמודות, כלומר הסדר או המיון מתבצעים על סמך ערכי התכונה של העמודה בסדר עולה או יורד.
- GROUP BY ממוקמת תמיד אחרי משפט WHERE אבל לפני המשפט ORDER BY. מצד שני, ORDER BY משמש תמיד אחרי הצהרת GROUP BY.
תרשים השוואה של GROUP BY לעומת ORDER BY
טבלת ההשוואה הבאה מסבירה את ההבדלים העיקריים ביניהם בצורה מהירה:
SN | GROUP BY | מיין לפי |
---|---|---|
1. | הוא משמש לקיבוץ שורות בעלות אותם ערכים. | הוא ממיין את ערכת התוצאות בסדר עולה או יורד. |
2. | זה עשוי להיות מותר במשפט CREATE VIEW. | זה אסור במשפט CREATE VIEW |
3. | זה שולט בהצגת השורות. | הוא שולט בהצגת העמודות. |
4. | התכונה לא יכולה להיות תחת פונקציית צבירה במשפט GROUP BY. | התכונה יכולה להיות תחת פונקציית צבירה במשפט ORDER BY. |
5. | הוא משמש תמיד לפני הסעיף ORDER BY במשפט SELECT. | הוא משמש תמיד אחרי משפט GROUP BY במשפט SELECT. |
6. | חובה להשתמש בפונקציות מצטברות ב-GROUP BY. | אין חובה להשתמש בפונקציות מצטברות ב-ORDER BY. |
7. | כאן, הקיבוץ נעשה על סמך הדמיון בין ערכי התכונה של השורה. | כאן, ערכת התוצאות ממוינת על סמך ערכי התכונות של העמודה, בסדר עולה או יורד. |
סיכום
הסעיפים GROUP BY ו-ORDER BY מושווים במאמר זה. שני הסעיפים הם תכונות מסד נתונים שימושיות ביותר של SQL. כאשר אנו רוצים ליצור קבוצה של שורות, אנו משתמשים במשפט GROUP BY. אם אנו רוצים לארגן נתונים בסדר עולה או יורד על סמך עמודה מסוימת, אנו משתמשים בסעיף ORDER BY. אין להם שום מערכת יחסים מכיוון ששניהם משמשים לשתי מטרות שונות. עם זאת, אנו יכולים לשלב אותם כדי לשרת מטרה מיוחדת או להשתמש בהם בנפרד בהתאם לנסיבות. אנו יכולים להשתמש בסעיפים אלה רק עם המשפט SELECT.
מפתח ראשי ומפתח מורכב ב-sql