
COUNT(EmployeeID) מחזיר תשעה עובדים, ואילו COUNT(Region) מחזיר חמישה. ארבעה עובדים בלי מחוז לא נספרים.COUNT(ISNULL(Region, 1)) מחליף את ה-NULL בערך שייספר. בשימוש הזה צריך לשים לב לסוג הנתונים של העמודה.הטקסט המלא של הדקות הראשונות בהרצאה «אובייקט Null עם פונקציות סכימה» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
מצורע נוסף בעבודה עם SQL או מקום נוסף שבו נדרשת תשומת לב יתרה מצד המפתח כאשר הוא מתמודד עם העובדות שיש בהן נ"ל זה בעבודות של פונקציות סכימה.
לנושא של פונקציות סכימה מוקדש שיעור בנפרד ואנחנו לא ניכנס לזה אבל אנחנו רק נראה מספר בעיות וכיצד אנחנו מטפלים בהן. שימו לב שכאשר אני שולף כאן סלע כוכבי של EmployeeID על מנת לזהות מספר העובדים שיש לי בחברה, מנגד אני עושה Count של Region מתוך טבלת Employees, השאיפה של הסלקט הזה מציג לי מצב קצת עקום
ביחס למציאות, שבעוד שכאשר ספרתי לפי העמודה של אפלוידי קיבלתי תשעה עובדים, ספרתי את השורות לפי העמודה של ריג'ן, קיבלתי חמישה עובדים בלבד.
זאת למה? אנחנו כבר יודעים את התשובה, מכיוון שבשורות מסוימות עבור העמודה ריג'ן מצוין לי ערכי נ"ל, כשאנחנו מגיעים לכאן למסקנה שפונקציות סכימה אינן מתייחסות לערכי נ"ל, אם לא לוקחים את הערך null בחשבון הערך null לא נספר.
על מנת לפתור את הבעיה הזאת נוצר סימול מיוחד שהוא רלוונטי רק לפונקציית סכימה count ואי אפשר להשתמש בו בפונקציות אחרות של max, average, min ו-max והאפשרות של כוכבית.
count כוכבית משמעותה לא משנה לי איזה עמודה אתה סופר. האחת אתה סופר ברמה של שורות ובהינתן null בעמודה כזו או אחרת אתה עדיין סופר את אותה שורה כשורה ולידית לכל דבר ועניין.
סלקט של קאונט כוכבית יחזיר לנו את מספר השורות כפי שספרנו אותן ב-employee ID, שם אנחנו יודעים שאין לי שום ערך נ"ל. כפירה של עמודה ספציפית צריך לקחת בחשבון שמדובר כאן בעמודה שיכולה לקבל נ"ל, וממילא הערכים שאני אקבל, הפלט שאני אקבל בתוצאה יכול להיות מעוות. איך אנחנו פותרים את הבעיה?
כאן זה כבר נקודה מעניינת. שימו לב שאני יכול להשתמש כאן בקואליס שוב פעם בקואליס ברגע שאני מקבל את הערך ריג'ן ובמידה והוא מתקבל כנ"ל