PracticU

אובייקט Null עם פונקציות סכימה

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

אובייקט Null עם פונקציות סכימה
ההרצאה ממשיכה בנושא NULL ומראה שפונקציות סכימה אינן מתייחסות לערכי NULL, ואיך מטפלים בכך.
השלבים העיקריים
1. הבעיה: COUNT(EmployeeID) מחזיר תשעה עובדים, ואילו COUNT(Region) מחזיר חמישה. ארבעה עובדים בלי מחוז לא נספרים.
2. COUNT(*): סופר שורות, בלי קשר לערכי העמודות, ולכן מחזיר תשעה.
3. תיקון עם ISNULL: COUNT(ISNULL(Region, 1)) מחליף את ה-NULL בערך שייספר. בשימוש הזה צריך לשים לב לסוג הנתונים של העמודה.
4. המרת סוגי נתונים: ב-COALESCE יש צורך להמיר את הערך במפורש לסוג העמודה, ולכן מופיעה שגיאה על המרה מ-varchar ל-int. ISNULL מבצע את ההמרה אוטומטית ולכן עובד בלי הפרדה.
שימו לב
- לפי ההרצאה, פונקציות סכימה אינן מתייחסות לערכי NULL, ולכן כדאי לבדוק את התוצאה מול מספר השורות בטבלה.
בסיום סופרים נכון גם עמודות שיכולות להכיל NULL.
השיעור הבא בקורס: הוספת שורה לטבלה למתקדמים - Insert

פרקי ההרצאה: אובייקט Null עם פונקציות סכימה

  1. 00:00

    פונקציות סכימה ותוצאות לא צפויות עם NULL

  2. 00:39

    ספירת עובדים בעמודת EmployeeID ובעמודת Region

  3. 01:16

    פונקציות סכימה מתעלמות מערכי NULL

  4. 01:56

    COUNT(*) סופר שורות גם ללא ערך

תמלול ההרצאה: אובייקט Null עם פונקציות סכימה

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

  1. 00:21

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

  2. 00:35

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

  3. 01:06

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

  4. 01:16

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

  5. 01:37

    על מנת לפתור את הבעיה הזאת נוצר סימול מיוחד שהוא רלוונטי רק לפונקציית סכימה count ואי אפשר להשתמש בו בפונקציות אחרות של max, average, min ו-max והאפשרות של כוכבית.

  6. 01:53

    count כוכבית משמעותה לא משנה לי איזה עמודה אתה סופר. האחת אתה סופר ברמה של שורות ובהינתן null בעמודה כזו או אחרת אתה עדיין סופר את אותה שורה כשורה ולידית לכל דבר ועניין.

  7. 02:08

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

  8. 02:29

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

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

ההרצאה הקודמת: אוביקט NULL

ההרצאה הבאה: הוספת שורה לטבלה למתקדמים - Insert

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

  • Empty String and Null
  • אובייקט Screen
  • פונקציות - Functions (חלק 1)
  • פונקציות - Functions

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

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