Menu
Coddy logo textTech

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', אף על פי שלא סיננו את השאילתה כולה. זהו הטריק שמאחורי כל שאילתת לוח מחוונים מרובת מדדים שתכתבו אי פעם.

challenge icon

אתגר

קל

הטבלאות והעמודות הזמינות:

  • orders: id, customer_id, status

עבור כל customer_id החזר:

  • customer_id
  • total: המספר הכולל של ההזמנות שהלקוח ביצע
  • 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
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה מעבר ליסודות

תרגלו בעצמכם: SQL אונליין