Menu
Coddy logo textTech

שאילתות משנה חלק 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 אונליין