SUM עם CASE
חלק מהיחידה מעבר ליסודות במסלול ה-SQL של Coddy. שיעור 13 מתוך 27.
אותו רעיון עובד עם SUM: והוא אפילו גמיש יותר. הCASE יכול להחזיר 1 עבור שורות תואמות ו־0 עבור כל השאר, או שהוא יכול להחזיר כל ערך מספרי כדי לתת משקל שונה לשורות.
SELECT
SUM(CASE WHEN status = 'active' THEN 1 ELSE 0 END) AS active_count,
SUM(CASE WHEN plan = 'pro' THEN amount ELSE 0 END) AS pro_revenue
FROM usersSUM(CASE … THEN 1 ELSE 0 END) ו־COUNT(CASE … THEN 1 END) נותנים את אותה תוצאה לספירה; בחרו בסגנון שהצוות שלכם מעדיף.
אתגר
קלטבלאות ועמודות זמינות:
transactions:id,category,type,amount
type הוא 'sale' או 'refund'. עבור כל category החזר:
categorynet_revenue: סכום ערכי המכירות פחות סכום ערכי ההחזרים
חשב את net_revenue בביטוי SUM(CASE …) יחיד, שבו ההחזרים תורמים את הסכום שלהם כמספר שלילי. מיין לפי net_revenue בסדר יורד.
נסו בעצמכם
SELECT category,
-- SUM(CASE ...) אחד שבו החזרים נספרים כשליליים
FROM transactions
GROUP BY category
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה מעבר ליסודות
תרגלו בעצמכם: SQL אונליין