PracticU

פונקציות מתקדמות - Grouping

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

פונקציות מתקדמות - Grouping
השיעור ממשיך את ROLLUP ו-CUBE, ומראה איך מבחינים בין NULL שנמצא בנתונים לבין NULL שנוצר בשורת סיכום. לשם כך משתמשים בפונקציות GROUPING ו-GROUPING_ID.
השלבים העיקריים
1. הבעיה: בשורות סיכום של ROLLUP או CUBE העמודה מקבלת NULL. אם בטבלה עצמה יש NULL אמיתי באותה עמודה, לא ניתן לדעת מהפלט מי מהם מייצג סיכום.
2. דוגמה: טבלת Projects עם שם מחלקה ותקציב. לקבוצה אחת במחלקת שיווק יש NULL אמיתי בשם העובד, עם תקציב משלה.
3. GROUPING: מקבלת עמודה אחת ומחזירה 1 אם ה-NULL נוצר מהסיכום, ו-0 אם הוא ערך אמיתי בטבלה.
4. שורות סיכום: בדוגמה שורות הסיכום מסומנות ב-1, כלומר שורות סיכום לפי מחלקה ושורת הסיכום הכללית.
5. GROUPING_ID: מקבלת כמה עמודות ומחזירה מספר שמייצג את רמת הסיכום. 0 הוא שורת פירוט מלאה, והערך 3 בדוגמה הוא הסיכום הכללי. ערכים ביניים מציינים סיכום חלקי.
6. מיון לפי הרמה: אפשר למיין לפי הכינוי של GROUPING_ID, ואז כל הרמות מופיעות לפי הסדר.
פקודות והגדרות
GROUPING(EmployeesCount) ו-GROUPING_ID(DepartmentName, EmployeeID) בחלק SELECT, עם ROLLUP בחלק GROUP BY. הכינוי נכתב אחרי הפונקציה, ואפשר להשתמש בו ב-ORDER BY.
שימו לב
אם בודקים עמודה לא נכונה, הפלט אינו מדויק. יש לבחור את העמודה שחושדים בה לערך NULL אמיתי.
בסיום תוכלו לזהות שורות סיכום בפלט של ROLLUP או CUBE, ולהבחין בינן לבין ערכי NULL אמיתיים.

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

  1. 00:00

    מבוא: הבעיה שנוצרת עם ROLLUP ו-CUBE

  2. 01:17

    השורות המסכמות שמייצר ROLLUP

  3. 02:17

    הבחנה בין NULL אמיתי לערך סיכום

  4. 02:52

    עמודות מפתח שאינן מקבלות NULL

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

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

  1. 00:20

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

  2. 00:41

    בואו נתחבר ל-Northwind ונגדיר לעצמנו את הכותרת של השיעור Grouping and Grouping Functions. שימו לב לשאילתה, זו שאילתה שראינו אותה בשיעור הקודם.

  3. 00:55

    Customer ID, Employee ID, אנחנו סוכמים מתוך טבלת Orders, מסכמים ב-Customer ID in Works and Franks and Employee ID in 124. Go Buy or Roll-up, Employee ID ו-Customer ID.

  4. 01:17

    אנחנו גם נעשה Order Buy ונריץ את השאילתה. ושאילתה זו, כפי שראינו אותה בשיעור הקודם, אנחנו בעצם מקבלים מידע מסוכן רב-מימדי על פי סדר הכתיבה של העמודות בתוך ה-Roll-up.

  5. 01:34

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

  6. 01:50

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

  7. 02:17

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

  8. 02:38

    אולם מכאן נשאלת השאלה מה קורה כאשר בפועל אמיתית יש לי ערך null בטבלה, כיצד אני מבחין בין ערך null שהוא value שמופיע בטבלה, ערך נ"ל שהוא טבלאי לעומת ערך נ"ל שהוא רק תוצר נלווה של השימוש באופרטורים rollup of queue.

  9. 03:03

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

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

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

ההרצאה הבאה: סוגי משתנים

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

  • פקודות מתקדמות בלינוקס
  • פקודות DHCP מתקדמות
  • פונקציות - Functions (חלק 1)
  • פונקציות - Functions

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

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