שיעורי מודול (1/3)
מבוא ל-CTEs (WITH)
מבוא ל-CTEs (WITH)
במוקדם או במאוחר זה קורה לכולם: אתה צריך לסנן נתונים על סמך התוצאה של צבירה, ואז לקחת את המסנן ולהצטרף אליו עם שאילתה מצטברת אחרת. אתה מתחיל לכתוב SELECT בתוך SELECT, אשר בתורו מסתיים ב-FROM של עוד SELECT.
התוצאה? ספגטי SQL, שאילתה שאינה ניתנת לקריאה עבור כל אדם.
CTEs (ביטויי טבלה נפוצים) מאפשרים לך להתיר את הבלגן הזה. אתה מפעיל אותם באמצעות מילת המפתח WITH, המאפשרת לך להגדיר שאילתות זמניות בשם ולאחר מכן להשתמש בהן מחדש כ"טבלאות וירטואליות" בשאילתה הסופית.
תחביר בסיסי
WITH premium_customers AS (
SELECT customer_id, SUM(total_amount) AS total_spent
FROM orders
GROUP BY customer_id
HAVING SUM(total_amount) > 1000
)
SELECT customers.first_name, premium_customers.total_spent
FROM customers
JOIN premium_customers ON customers.id = premium_customers.customer_id;כפי שאתה יכול לראות, השאילתה הראשית בתחתית קוראת מ-premium_customers כאילו הייתה טבלה אמיתית! וזה הרבה יותר קריא ממגה חיבור פנימי עם שאילתות משנה מקוננות.
אנחנו רוצים את המוצרים היקרים מאוד. השתמש ב-CTE שנקרא 'מוצרי_יוקרה' כדי לבחור 'מזהה' ו'מחיר' מתוך 'מוצרים' כאשר 'מחיר > 500'. לאחר מכן הפעל שאילתה ראשית ב-CTE הזה והצג הכל (*).
הצג רמז
התחל עם WITH luxury_products AS (...) ואז בחר * FROM luxury_products.
הפתרון זמין לאחר 3 ניסיונות
אנחנו רוצים למצוא משתמשים שכותבים ביקורות. צור 'בודקים' של CTE שמחלץ את ערכי 'מזהה_לקוח' הייחודיים (DISTINCT) מתוך 'ביקורות'. לאחר מכן, חלץ את 'id', 'first_name', 'last_name' מטבלת 'לקוחות' ו\`הצטרף\' אליו עם ה-CTE של 'הבודקים' במזהה.
הצג רמז
WITH reviewers AS (SELECT DISTINCT customer_id FROM ביקורות) SELECT id, first_name, last_name FROM customers JOIN בודקים ON customers.id = reviewers.customer_id;
הפתרון זמין לאחר 3 ניסיונות