COUNT עם CASE
חלק מהיחידה מעבר ליסודות במסלול ה-SQL של Coddy. שיעור 12 מתוך 27.
אפשר להציב ביטוי CASE בתוך פונקציית צבירה. הטריק הוא ש-COUNT מתעלמת מ-NULL, ולכן CASE ללא ELSE סופרת רק שורות שתואמות לתנאי.
SELECT
COUNT(*) AS total,
COUNT(CASE WHEN status = 'active' THEN 1 END) AS active_count
FROM usersכעת active_count הוא מספר השורות של 'active', אף על פי שלא סיננו את השאילתה כולה. זהו הטריק שמאחורי כל שאילתת לוח מחוונים מרובת מדדים שתכתבו אי פעם.
אתגר
קלהטבלאות והעמודות הזמינות:
orders:id,customer_id,status
עבור כל customer_id החזר:
customer_idtotal: המספר הכולל של ההזמנות שהלקוח ביצעshipped: מספר ההזמנות שבהןstatus = 'shipped'cancelled: מספר ההזמנות שבהןstatus = 'cancelled'
החזר רק לקוחות שיש להם לפחות הזמנה אחת שבוטלה. מיין לפי customer_id.
נסו בעצמכם
SELECT customer_id,
COUNT(*) AS total,
-- נשלחו, בוטלו באמצעות COUNT(CASE ...)
FROM orders
GROUP BY customer_id
-- סנן ללקוחות עם ביטול אחד לפחות
ORDER BY customer_id
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה מעבר ליסודות
תרגלו בעצמכם: SQL אונליין