קבוצת Postgresql מאת

Qbwzt Postgresql M T



Postgresql group by clause הוא תכונה המשמשת לאיחוד/שילוב של שורות אלו בטבלה שיש להן את אותם נתונים. סעיף זה משמש בעיקר להסרת נתונים כפולים ולשמירה על מקיפות. בכל פעם שאנו רוצים לחשב סכום, או כל אגרגט אחר כמו AVG וכו', תמיד נעשה שימוש בקבוצה לפי סעיף מכיוון שיש הרבה סעיפים בשימוש ב-PostgreSQL. אבל יש היררכיה בין כל סעיף.

מאיפה > 'קבוצה לפי' > HAVING > SELECT > DISTINCT > ORDER BY > LIMIT

העבודה של PostgreSQL נמצאת בסעיף 'היכן' וסעיף ה'יש'.







תחביר



עמודה SELECT

מ-dumytable

WHERE [תנאים ]

GROUP BY טור ראשון, טור שני..

סדר לפי טור ראשון, טור שני.. ;

דוגמה 1



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





>> בחר lname, SUM (תשלום) מהנוסע GROUP BY lname;

שם המשפחה של הנוסע נבחר באמצעות פונקציה מובנית 'SUM' שלוקחת את העמודה 'תשלום'. והוסף את התשלום עבור אותם אנשים בעלי אותו שם. לדוגמה, השכר של 'Javed' ו-'Saad' מתווסף. ואילו עבור 'מאליק' ו'שמס', זה מוזכר בנפרד.



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

בית חולים:

>> בחר עיר, SUM (גיל) מבית החולים GROUP BY עיר;

דוגמה 2

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

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

>> בחר מזהה, lname, SUM (תשלום) מהנוסע GROUP BY id, lname;

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

דוגמה 3

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

פריטים:

הזמנות:

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

>> בחר שם || ',' || קטגוריה כתיאור, כתובת מתוך פריטים להצטרפות פנימית הזמנות USING (כתובת) GROUP BY כתובת, תיאור;

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

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

עוֹבֵד:

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

>> בחר fname || ' ' || passenger.lname בתור שם_מלא, passager.age from passager INNER הצטרף לעובד USING (fname) GROUP BY full_name, passager.age ORDER BY passager.age;

נוצרת שורה אחת. השם המלא נוצר על ידי צירוף שתי עמודות עם רווח, והכתובת נבחרת שבה שם ה-fname של הנוסע תואם ל-fname של העובד.

דוגמה 4

דוגמה זו עוסקת בשימוש בפונקציית count () כדי לספור את המזהים של טבלת 'פריטים'. זה שוב מקבץ לפי המזהה של הטבלה.

>> בחר מזהה, COUNT (מזהה) מתוך פריטים GROUP BY ID;

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

ה-pgAdmin שלך

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

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

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

>> SELECT o.address, category, count (*) AS 'ALL', GROUPING(o.address) AS 'add' , GROUPING (category ) AS 'cat' FROM items I, orders o שבו i.order_no = o. order_id AND i.address= 'Lahore' GROUP BY CUBE (o.address, category) ORDER BY 1, 2;

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

עכשיו, אם נשנה את מצב השם מטבלה ונחליף את הטבלה עם אחר. 'Items.address' מוחלף ב-'order.address', ואז התוצאה שונה.

סיכום

הסעיף 'Postgresql group by' משמש להחלת כל אופרטור מצטבר על הנתונים הקולקטיביים. מאמר זה משתמש בקבוצה אחר סעיף עם פונקציית ספירה, צירוף ובחירה וקיבוץ של מספר עמודות. אני בטוח שהמדריך הזה יהיה האמצעי הטוב ביותר להבנה עבור הקוראים.