PracticU

פקודת case - חלק 3

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

פקודת case - חלק 3
בשיעור לומדים את פונקציית CASE ב-SQL Server, שפועלת בדומה למבנה תנאי if ו-else, ומאפשרת להחזיר ערכים שונים לפי תנאי. השיעור מציג את שתי הצורות של הפונקציה ודוגמה לקיבוץ נתונים בעזרתה.
השלבים העיקריים
1. CASE פשוט: בודקים משתנה מול ערכים קבועים. CASE @i WHEN 1 THEN ... WHEN 2 THEN .... אם לא נכנסו לאף ערך, מבצעים את חלק ה-ELSE, והפונקציה נסגרת ב-END.
2. CASE מורכב (Searched): אין משתנה בתחילה, ובכל WHEN כותבים תנאי בוליאני שלם, למשל unit price BETWEEN 2.5 AND 20. התנאים יכולים להיות חופפים או זרים זה לזה.
3. קיבוץ לפי טווחי מחירים: מוצגים מוצרים לפי טווחי מחיר. בעזרת SUM ו-CASE אפשר לספור בשאילתה אחת כמה מוצרים נמצאים בכל טווח, במקום שלוש שאילתות נפרדות.
4. תוצאה: השאילתה מחזירה שורה אחת עם שלוש עמודות, וכל עמודה מציגה כמה מוצרים יש בטווח שלה.
שימו לב
בתוך SUM, כל מוצר שנכנס לטווח מקבל 1 והשאר מקבלים 0, לכן הסכום הוא ספירה. הטריק הזה נותן את התוצאה במבנה נוח, בלי צורך ב-UNION בין השאילתות.
בסיום השיעור יש בידיכם יכולת לכתוב CASE פשוט ו-CASE מורכב, ולקבץ נתונים בשאילתה אחת.
השיעור הבא בקורס: cursor - חלק 1

פרקי ההרצאה: פקודת case - חלק 3

  1. 00:00

    פונקציית CASE: מבוא

  2. 00:38

    CASE פשוט לעומת CASE מחפש

  3. 01:32

    CASE פשוט: בדיקת ערך של משתנה

  4. 02:25

    הדפסת שם לפי מזהה עובד

  5. 03:48

    הרצה ומעבר לענף ELSE

  6. 05:25

    CASE מחפש: תנאים בוליאניים

  7. 06:38

    סיווג מחירים מטבלת Products

תמלול ההרצאה: פקודת case - חלק 3

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

  1. 00:19

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

  2. 00:47

    סימפל לקייס סרצ' כפי שאנחנו נראה בהמשך השיעור כאשר Case Simple נמצא במבנה הבא זהו Case שבו אנחנו בודקים משתנה מסוים משתנה variable ובהינתן מצב שבו הוא שווה לערך מסוים ל-value אנחנו בודקים אותו מול ערך סקלרי נקודתי אז אנחנו מבצעים או מדפיסים או מבצעים את הפעולות המתאימות.

  3. 01:11

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

  4. 01:28

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

  5. 01:51

    מתוך טבלת Employee להציג למשתמש פלט מתאים. בואו נגדיר את המשתנה שאותו אנחנו נקבל מתוך טבלת Employees. Declare i end אנחנו נקלוק את ה-employee ID.

  6. 02:07

    Select שטרידל i שווה ל-employee ID שהוא אינטג'ר ולכן אנחנו מתאמים כאן מבחינת הדאטה דייק. Home employees, מקבלים את זה כאן מתוך employees ומה שאנחנו בסופו של דבר עד כאן רוצים להדפיס את ה-strudel I. אבל איך אנחנו נדפיס אותו? לפי Case. בואו נשתמש ב-Case.

  7. 02:27

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

  8. 02:51

    זכתה. When 1 then פריסט ננסי, When 2 then אנחנו ניקח את האנרי, When 3 אנחנו נקבל מכרוזת אחרת של סטיבנט. כל מכרוזת בעצם תודפס, תישלח לפקודת הפרינט, בהתאם לערך שנמצא בתוך המשתנה שאותו אנחנו בודקים השטרודל I. הוא N9 תפסנו מספר רמה גבוה ביותר נדפיס את מרגרט וכולי וכולי אנחנו יכולים ללכת ולפרט אבל שימו לב שהקוד כאן

  9. 03:27

    הוא הרבה הרבה יותר קריא מאשר אוסף של ifים בגין כל שורה כאן הייתי צריך לרשום if else if else if else כלומר לשרשר כאן מספר של if else else if ובסופו של דבר על מנת להדפיס את הערך ולתת גם אלס כאן אנחנו נותנים כאן אלס no value נבחר את המכרוזת הזאת ו-end אנחנו סוגרים את ה-case שלפנינו בואו

  10. 03:55

    נריץ את התוכנית בואו נראה את ה-case simple הראשון שאותו אנחנו יוצרים F5 ולא F4 כפי שאנחנו עושים תמיד F5 וכאן אם אני ארים את הפלט אנחנו נזהה שקיבלנו את העובדת מרגרט כלומר קיבלנו את 9.

  11. 04:17

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

  12. 04:52

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

  13. 05:19

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

  14. 05:36

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

  15. 06:01

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

  16. 06:15

    בכל חלק של ה-case אנחנו רשאים לרשום איזה תנאים שאנחנו רוצים. אפשר להיכנס לשני when, אפשר שתהיה חפיפה ביניהם, אפשר שהם יהיו שונים לזה, זרים לזה, הכל כאן קביל.

  17. 06:29

    בסוף יש לנו את האנס, במידה ולא נכנסתי על אף אחד מה-when אנחנו נכנסים לתוך ה-case, בסופו של דבר End Case בעצם על מנת לסגור את ה-Case שלה. בואו נראה דוגמא כיצד אנחנו מבצעים Case Search עבור הנתונים בטבלה.

  18. 06:47

    אנחנו מעוניינים לפלח את כל המחירים וקוד מוצר Product ID ו-Unit Price מתוך טבלת פרודקטס. בואו נציג את כל המחירים מתוך הטבלה. Ordered by Unit Price F5 על מנת לקבל את הפלט והפלט מוצג לפנינו כל קודי מוצר והמחירים שלהם ממוניינים אנחנו מעוניינים להכניס אותם לתוך קטגוריות כלומר לסכום

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

ההרצאה הקודמת: פקודת case - חלק 2

ההרצאה הבאה: cursor - חלק 1

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

  • סקריפט עם case
  • כתיבת Test Case
  • משפט Switch, Case - חלק 1
  • ביטויי Switch Case

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

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