תרגול מספר 10 מעבדת SQL מספר 3 בסיסי נתונים תרגול מספר 10 מעבדת SQL מספר 3
הנושאים לתרגול Basic SELECT statements Join Aggregation Order by Top Subqueries
Subquery Output Types Single Value Single Column Table בכל מקום בו יכול להופיע ביטוי, ניתן להשתמש במקומו בתת-שאילתא שמחזירה ערך בודד. לדוגמה: SELECT sname [Ship Name], max_speed [Max Speed] FROM Ships WHERE max_speed > שלוף את שמות החיזרים בעלי מספר הרגליים הנמוך ביותר "Speed Delta" מוגדר כַּהפרש בין מהירות חללית מסוימת למהירות החללית המהירה ביותר בצי, הצג את הדלתא עבור כל חללית (SELECT AVG(max_speed) FROM Ships) 90
Referencing the Outer Query Subquery Output Types Single Value Single Column Table Referencing the Outer Query נניח שנרצה לדעת עבור כל כוכב לכת את החללית המהירה ביותר שהגיעה אליו: SELECT pname [Planet], sname [Fastest Ship] FROM dbo.Planets p JOIN dbo.Trips t ON p.p_no = t.p_no JOIN dbo.Ships s ON t.s_no = s.s_no WHERE max_speed = ( SELECT MAX(max_speed) FROM dbo.Trips t1 JOIN dbo.Ships s1 ON t1.s_no = s1.s_no WHERE t1.p_no = p.p_no)
Subquery Output Types Single Value Single Column Table ניתן להשתמש בתת-שאילתא שמחזירה עמודה בודדת בסעיף WHERE במספר אופנים: SELECT pname [Planet] FROM dbo.Planets p JOIN dbo.Trips t ON p.p_no = t.p_no JOIN dbo.Aliens_in_trips at ON t.t_no = at.t_no WHERE id_no IN (SELECT id_no FROM dbo.Aliens_in_trips GROUP BY id_no HAVING COUNT(*) = 1) מה עושה השאילתא? שלוף את שמות כוכבי הלכת בהם ביקרו חייזרים בעלי יותר מ- 5 רגליים שביקרו בלפחות שלושה כוכבי לכת שונים * IN IN ANY ALL
Subquery Output Types Single Value Single Column Table ניתן להשתמש בתת-שאילתא שמחזירה עמודה בודדת בסעיף WHERE במספר אופנים: SELECT pname [Planet] FROM dbo.Planets p JOIN dbo.Trips t ON p.p_no = t.p_no JOIN dbo.Aliens_in_trips at ON t.t_no = at.t_no WHERE id_no = ANY (SELECT id_no FROM dbo.Aliens_in_trips GROUP BY id_no HAVING COUNT(*) = 1) שלוף את שמות כל החלליות שמהירוֹת יותר מלפחות חללית אחת בעלת פחות מושבים IN ANY ALL
Subquery Output Types Single Value Single Column Table ניתן להשתמש בתת-שאילתא שמחזירה עמודה בודדת בסעיף WHERE במספר אופנים: פועל בדיוק כמו ANY רק עבור כל הרשומות בתת-השאילתא שלוף את שמות כוכבי הלכת שהכי גדולים במערכת השמש שלהם (ניתן לביצוע בלי אגרגציה) IN ANY ALL
Subquery Output Types ניתן להשתמש בתת-שאילתא שמחזירה טבלה בשתי צורות: Single Value Single Column Table ניתן להשתמש בתת-שאילתא שמחזירה טבלה בשתי צורות: SELECT pname [Planet] FROM dbo.Planets p WHERE NOT EXISTS(SELECT * FROM dbo.Aliens a JOIN dbo.Aliens_in_trips at ON a.id_no = at.id_no JOIN dbo.Trips t ON at.t_no = t.t_no WHERE t.p_no = p.p_no AND no_of_legs > 5) מה עושה השאילתא? EXISTS EXISTS As table
Subquery Output Types ניתן להשתמש בתת-שאילתא שמחזירה טבלה בשתי צורות: Single Value Single Column Table ניתן להשתמש בתת-שאילתא שמחזירה טבלה בשתי צורות: ניתן לכתוב תת-שאילתא בשדה ה- FROM והתוצאה תתנהג כמו טבלה מצא, עבור כל חללית, את ממוצע מספר הרגליים המקסימאלי שהיה לחייזר שטס בה במסע מסוים האם התוצאה נכונה? CAST(expression AS <data_type>) EXISTS As table