PracticU

פקודות RollUp עם Cube

בלי כתוביותעם כתוביות
PracticU › קורס DBA אפליקטיבי - שפת SQL למתחילים › פקודות RollUp עם Cube
מילון מושגים:
שאילתה - בקשה למסד נתונים לשלוף, להוסיף, לעדכן או למחוק נתונים, לרוב בשפת SQL.
עמודה - שדה בטבלת מסד נתונים שמחזיק ערך מסוג מסוים עבור כל שורה, למשל שם או תאריך.
טבלה - מבנה במסד נתונים שמאחסן נתונים בשורות ועמודות. כל שורה היא רשומה וכל עמודה היא שדה.

פקודות RollUp עם Cube
השיעור עוסק בשתי אפשרויות ל-GROUP BY שמוסיפות שורות סיכום: CUBE ו-ROLLUP. הן מחזירות סיכומים ברמות שונות בשאילתה אחת, במקום לכתוב כמה שאילתות נפרדות.
השלבים העיקריים
1. הבעיה: שאילתה רגילה עם GROUP BY על CustomerID ו-EmployeeID מציגה מכירות לכל זוג לקוח-עובד. אם רוצים גם סיכום לכל עובד או לכל לקוח, צריך לכתוב שאילתה נוספת לכל רמה.
2. CUBE: מוסיפים למשפט GROUP BY את המילה CUBE, והשאילתה מחזירה כל שילוב אפשרי של העמודות. בדוגמה השאילתה הרגילה מחזירה 5 שורות, ו-CUBE מחזיר 11.
3. סיכום בעמודה: בשורות הסיכום הערך בעמודה שאינה רלוונטית מופיע כ-NULL. זה הסיכום של כל הלקוחות או של כל העובדים.
4. ROLLUP: מציג סיכומים היררכיים לפי סדר העמודות שנכתב בסוגריים. הסדר משמעותי: הסיכום מתחיל מהעמודה הראשונה ומתקדם לשנייה.
5. תוצאה של ROLLUP: עבור כל עובד מתקבלת שורת סיכום, עבור כל עובד לכל לקוח, וסיכום כללי. שורות שמסכמות לקוח בלבד, בלי עובד, אינן מופיעות.
6. השורה הכללית: מופיעה עם NULL בשתי העמודות.
שימו לב
ה-NULL שנוצר מ-CUBE או מ-ROLLUP דומה ל-NULL אמיתי בטבלה. ההבחנה ביניהם נעשית בעזרת פונקציית GROUPING.
בסיום תוכלו לכתוב סיכומים מרובי רמות בשאילתה אחת.
השיעור הבא בקורס: פונקציות מתקדמות - Grouping

פרקי ההרצאה: פקודות RollUp עם Cube

  1. 00:00

    מבוא: אופרטורי ROLLUP ו-CUBE

  2. 00:53

    שאילתת מכירות לפי לקוח ועובד

  3. 01:51

    הצורך בסיכומים נוספים לכל לקוח ולעובד

  4. 02:28

    שאילתות נפרדות לכל רמת סיכום

  5. 03:58

    פתרון בעזרת אופרטור CUBE

  6. 04:44

    כתיבת שאילתת CUBE ומשמעות המילה

  7. 05:36

    הסיכומים שמייצר CUBE

תמלול ההרצאה: פקודות RollUp עם Cube

הטקסט המלא של הדקות הראשונות בהרצאה «פקודות RollUp עם Cube» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:19

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

  2. 00:37

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

  3. 00:47

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

  4. 01:05

    אנחנו שולפים את זה, מכיוון שמדובר על מכירות, אנחנו נשלוף את זה מתוך תולדת orders. לא נשלוף את זה עבור כל הלקוחות, בואו נשלוף את זה עבור customerID שווה ל-Vergs ו-Frank.

  5. 01:20

    לא נשלוף את זה עבור כל העובדים, בואו נלך על קוד עובד שביצעו את המכירות עבור הלקוחות הללו, קוד עובד 1, 2 ו-4.

  6. 01:33

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

  7. 02:02

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

  8. 02:27

    אני רוצה לומר שבסך הכל קוד עובד מספר 1 ביצע תשע מכירות אבל המידע עצמו לא ניתן לי כאן כפלט מהשאילתה אלא עליי על מנת לכתוב את הנתון הזה עליי ייצור שאילתה נוספת שתיתן לי את זה ברמה של קוד עובד בואו נפתח כאן חלון חדש ונכתוב את השאילתה כיצד היא תיראה From orders where employee ID שווה ל-1 and customer ID in אנחנו שוב פעם נבדוק את

  9. 03:14

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

  10. 03:40

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

  11. 04:00

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

  12. 04:24

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

  13. 04:33

    From Ordered Square. Customer ID in Bergseek Frank. בנוסף לזה and Employee ID נמצא בטווח של הערכים 1, 2 או 4. גורו ביי, אולם לפני שאנחנו מתחילים כבר את הסימון של העמודות אנחנו מציינים את המילה השמורה, המילה החדשה שכרגע אנחנו לומדים אותה Q. Q שמשמעותה "הצג לי מידע מסוכם בצורה רב-ממדית"

  14. 05:09

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

  15. 05:25

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

  16. 05:53

    F5 אנחנו מריצים, נעלה למעלה והנה אנחנו מגלים שמפלט של 5 שורות

לקורס המלא: קורס SQL ו‑DBA אפליקטיבי

ההרצאה הקודמת: פונקציות למתקדמים

ההרצאה הבאה: פונקציות מתקדמות - Grouping

הרצאות קשורות מקורסים אחרים

  • פקודות ב-MongoDB
  • פקודות NPM
  • סיכום פקודות ב-ANSIBLE
  • פקודות break and continue

קורסים נוספים במסלול

  • קורס NoSQL - MongoDB
  • קורס SSIS
  • קורס BI - ניתוח מסדי נתונים - Qlik Sense
  • קורס Power BI