פישוט שאילתות באמצעות מילת המפתח WITH
שיעור 2 מתוך 13 בקורס SQL למתקדמים של Coddy.
שאילתות עלולות להסתבך מדי כשמוסיפים הרבה שאילתות פנימיות. לדוגמה, הנה שאילתה שיש בה הרבה שאילתות משנה:
SELECT * FROM table1
WHERE col2 IN (
SELECT col1 FROM table2
WHERE col3 + col2 > 3 AND col5 LIKE '%test%' AND col6 IN (
SELECT col5 FROM table3
WHERE col1 AND col3 OR col2
)
)כדי להקל על כך, אפשר להשתמש במילת המפתח WITH query_name AS (...). היא מאפשרת לנו לשמור שאילתה בשם ולהשתמש בה בכל מקום שנרצה:
WITH query1 AS (
SELECT col5 FROM table3
WHERE col1 AND col3 OR col2
), query2 AS (
SELECT col1 FROM table2
WHERE col3 + col2 > 3 AND col5 LIKE '%test%' AND col6 IN query1
)
SELECT * FROM table1
WHERE col2 IN query2 AND col4 IN query1כאן השתמשנו מחדש ב-query1 בתוך query2 ובשאילתה הראשית.
אתגר
קלאיכות של מכשיר נמדדת באמצעות (width/height)*num_features.
אנחנו רוצים למצוא את כל המכשירים שמדורגים בחסר. יש לשלוף את כל המכשירים שבהם ה־opinion של המכשיר גדול מאיכות ה־ממוצעת, וה־score של המכשיר קטן מהאיכות הממוצעת.
כדי לפתור זאת, השתמשו בסעיף WITH כדי ליצור שאילתת משנה שמחשבת את האיכות הממוצעת, והשתמשו בה שוב בשאילתה הראשית.
נסו בעצמכם
כל השיעורים ביחידה SQL למתקדמים
תרגלו בעצמכם: קומפיילר Python אונליין