פרק 10: תת שאילתה בשפת SQL

**** לפודקאסט של הבלוג לחצו כאן ****

המדריך נכתב על ידי יובל מרנין.
למידע על שרותי מנטורינג של דאטה אנליסט לחצו כאן.


בפרק זה נלמד על תת שאילתה בשפת SQL.

כל פלט של שאילתה היא למעשה טבלה בפני עצמה, וניתן להשתמש בפלט בתוך שאילתה אחרת: 

select

       *

from

(

    select

       customer_id,

       count(*) as orders

    from

       orders

    group by

       customer_id

) as sub_query

left join

       customers as c on sub_query.customer_id=c.customer_id

order by

       sub_query.orders desc

 

 

בשאילתה שלפנינו במקום להשתמש בטבלה מהדטה-בייס  בהוראת ה from יצרנו תת שאילתה שמקבצת עבור כל לקוח את כמות ההזמנות שלו ואליה חיברנו את הנתונים של הלקוח.

 

כדי שנוכל להתייחס לטבלה בהמשך לתת שאילתה יש לתת לה שם עם הוראת as.

מומלץ לבחור שם עם משמעות כיוון ששימוש ששאילתה עם תתי שאילתות הופכת למורכבת יותר ושמות הגיוניים מקלים על מעקב אחר מקור השדות בשליפה.

 

בתתי שאילתות ניתן להשתמש בהרבה מקומות בתוך השאילתה, אך השימושים העיקריים הם בתוך הוראת from  כמו בדוגמה שהוצגה לפני, בהוראת join  (חיבור של תת השאילתה לטבלה אחרת) ובהוראת in  כמו בדוגמה הבאה: 

select

       *

from

       customers

where

       customer_id in

              (

              select

                     distinct

                     customer_id

              from

                     orders

              where

                     order_purchase_timestamp::date='2017-09-19'

              )

      

השאילתה הנ"ל מבקשת מהדטה-בייס את פרטי הלקוחות רק עבור הלקוחות שהזמינו ב 19 בספטמבר 2017.

כאשר משתמשים בתת שאילתה בתוך הוראת in  על השאילתה להחזיר רק שדה אחד (במרה שלנו customer_id).

 


המדריך נכתב על ידי יובל מרנין.
למידע על שרותי מנטורינג של דאטה אנליסט לחצו כאן.

**** לפודקאסט של הבלוג לחצו כאן ****

אם התגלתה טעות אנא צרו קשר במייל:
[email protected]

Yuval Marnin

לחברות המעוניינות בשירותי פרילנס או מנטורינג של אנליסט, ניתן לפנות אליי ל[email protected]