Menu
CoddyTech

שאילתות משנה חלק 2

חלק מהיחידה יסודות במסלול ה-SQL של Coddy. שיעור 39 מתוך 72.

יש שלושה סוגים עיקריים של שאילתות משנה:

  1. שאילתות משנה סקלריות - מחזירות ערך יחיד (שורה אחת, עמודה אחת)
  2. שאילתות משנה של שורה - מחזירות שורה יחידה עם כמה עמודות
  3. שאילתות משנה של טבלה - מחזירות כמה שורות ועמודות

לדוגמה, הנה כמה מקרי שימוש לכל סוג של תת-שאילתה:

תת-שאילתה סקלרית — מציאת עובדים שמרוויחים יותר מהשכר הממוצע:

SELECT name, salary
FROM employees
WHERE salary > (
    SELECT AVG(salary)
    FROM employees
);

שאילתת משנה עם שורה — מציאת עובד או עובדים באותה מחלקה ובעלי אותה משכורת כמו Alice

SELECT name
FROM employees
WHERE (department, salary) = (
    SELECT department, salary
    FROM employees
    WHERE name = 'Alice'
);

שאילתות משנה בטבלה – הצגת המחלקות ומספר העובדים בהן

SELECT department, count
FROM (
    SELECT department, COUNT(*) as count
    FROM employees
    GROUP BY department
) as dept_counts;

שימו לב למקרי השימוש:

  • סקלרי - השוואות פשוטות (>, <, =)
  • כשצריך להתאים כמה עמודות
  • כשצריך לבצע שאילתה מתוך קבוצת תוצאות
challenge icon

אתגר

קל

טבלאות ועמודות זמינות:

  • shop: price, quantity, category, list_date

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

חשוב: עליכם להשתמש בשאילתת משנה בתוך סעיף HAVING כדי לחשב את הממוצע. אל תשתמשו בערך שהוקלד מראש או בשאילתה נפרדת: שאילתת המשנה צריכה לחשב את AVG(quantity) ישירות מתוך טבלת shop בתוך HAVING.

שלבים לפתרון:

  1. ראשית, כתבו שאילתת משנה שמחשבת את הממוצע של כל הכמויות בחנות: SELECT AVG(quantity) FROM shop
  2. לאחר מכן, עבור כל קטגוריה, סכמו את הכמויות שלה והשוו אותן לשאילתת המשנה באמצעות מילת המפתח HAVING

נסו בעצמכם

quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה יסודות

תרגלו בעצמכם: SQL אונליין