
הטקסט המלא של הדקות הראשונות בהרצאה «פקודות RollUp עם Cube» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
לכולם. בשיעוריון היום אנחנו נראה Extensions ל Group By, לחלק של ה Group By. שני ה-Extensions הללו אלו שני אופרטורים קיוב ורולבק, אופרטורים ופונקציות, אשר משמשות לנו לראות מידע נוסף כחלק מפונקציות סכימה.
פונקציות סכימה, ראינו אותם בשיעורים קודמים, מין, מקס, קאונט, אבריג' וסאם, פונקציות שנותנות לנו מידע מסוכן בגין השאילתא הנתונה.
קיוב ורולבק מוסיפים לנו מידע נוסף עבור השאילתה. בואו נסתכל על השאילתה הבאה. תלוי את customerID, פסיק אינפלואי ID, קאונט כוכבית. אנחנו רוצים לספור כמה מכירות ביצע כל עובד עבור כל לקוח.
אנחנו שולפים את זה, מכיוון שמדובר על מכירות, אנחנו נשלוף את זה מתוך תולדת orders. לא נשלוף את זה עבור כל הלקוחות, בואו נשלוף את זה עבור customerID שווה ל-Vergs ו-Frank.
לא נשלוף את זה עבור כל העובדים, בואו נלך על קוד עובד שביצעו את המכירות עבור הלקוחות הללו, קוד עובד 1, 2 ו-4.
כמובן, לפני שאנחנו מריצים, נבצע את החלק של הגרוביי, החלק שבו אנחנו מציינים עבור מה אנחנו רוצים לסכום, ואז אנחנו מקבלים בעצם מצב למיין את זה עבור Customer ID על מנת לקירות את הבלט בצורה מסודרת, ואנחנו מקבלים כאן בעצם מידע מסוכם ברמה של כל לקוח, עבור כל עובד כמה מכירות הוא ביצע.
מה שחסר לנו כאן בתוך השאילתה הזאת זה לדעת כמה טוטאל מכירות ביצע כל לקוח, או כמה טוטאל מכירות ביצע כל עובד. כלומר, מהשאילתה הנתונה שלפנינו אני לא יכול לדעת כמה מכירות ביצע כל עובד אחד, אני יכול ללכת ולסכום את זה, לראות כאן את השורות, ולראות שעבור ברגס הוא ביצע ארבע מכירות ועבור פרנק בוצעו חמש מכירות.
אני רוצה לומר שבסך הכל קוד עובד מספר 1 ביצע תשע מכירות אבל המידע עצמו לא ניתן לי כאן כפלט מהשאילתה אלא עליי על מנת לכתוב את הנתון הזה עליי ייצור שאילתה נוספת שתיתן לי את זה ברמה של קוד עובד בואו נפתח כאן חלון חדש ונכתוב את השאילתה כיצד היא תיראה From orders where employee ID שווה ל-1 and customer ID in אנחנו שוב פעם נבדוק את
ברקס סייק פרנק. גם כאן נעשה גרו ביי אימפלואי ID ואנחנו כאן נקבל את מה שאנחנו יודעים מהשאילתא הקודמת שסך הכל קוד עובד מספר 1 עבור הלקוחות ברקס ופרנק ביצע תשע מכירות.
המכירות בלבד שזה הסכימה של הנתון שאנחנו רואים אותו בשאילתה שלפנינו. אולם כפי שאנחנו רואים היינו צריכים לכתוב כאן בעצם שלוש שאילתות. שאילתה אחת שסוכמת לי ברמה של לקוח לעובד, שאילתה שנייה שסוכמת לי ברמה של עובד ואם אני ארצה לדעת כמה מכירות בוצעו ברמה של לקוח אז כבר אנחנו נצטרך
לכתוב שאילתה שלישית בנוספת. איך אנחנו פותרים את הבעיה הזאת? לצורך כך יש לנו את האופרטורים קיוב וממנו אנחנו נפתח. איוב בעצם זהו אופרטור שאנחנו מסמלים אותו בחלק של אגרובאי ובו אנחנו מציינים איך אנחנו רוצים לקבל את המידע המסוכם, אנחנו רוצים לקבל אותו בצורה רב-ממדית.
אז בואו נסתכל איך אנחנו מייצרים את זה. בואו נכתוב את השאילתה הזאת שוב פעם. סליחה, Customer ID. Employee ID, שוב פעם, קאונט כוכבי.
From Ordered Square. Customer ID in Bergseek Frank. בנוסף לזה and Employee ID נמצא בטווח של הערכים 1, 2 או 4. גורו ביי, אולם לפני שאנחנו מתחילים כבר את הסימון של העמודות אנחנו מציינים את המילה השמורה, המילה החדשה שכרגע אנחנו לומדים אותה Q. Q שמשמעותה "הצג לי מידע מסוכם בצורה רב-ממדית"
כשמו כן הוא, קביע בצורה רב-ממדית. קסטומר איי-די, אימפלואי איי-די, כפי שציין את זה בחלק של הגרו ביי, שוב פעם, אורדר ביי, קסטומר איי-די, וכרגע השאילתה שלנו מוכנה להרצה.
שימו לב שקיוב ייצור לי כל שילוב אפשרי שבין קסטומר איי-די לאימפלואי איי-די, כלומר אני אקבל סך הכל סכימה עבור כל לקוח לכל עובד, אני אקבל סך הכל סכימה ברמה של עובד, ואני אקבל סך הכל סכימה ברמה של לקוח, בנוסף לזה אני אקבל טוטאל מכירות שבוצעו סך הכל עבור כל הלקוחות וכל העובדים על פי השאילתה שלפנינו.
F5 אנחנו מריצים, נעלה למעלה והנה אנחנו מגלים שמפלט של 5 שורות