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) يعطيان نفس النتيجة للعد؛ اختر الأسلوب الذي يفضله فريقك.
التحدي
سهلالجداول والأعمدة المتاحة:
<strong>transactions</strong>:<strong>id</strong>,<strong>category</strong>,<strong>type</strong>,<strong>amount</strong>
type هو إما 'sale' أو 'refund'. لكل category قم بإرجاع:
categorynet_revenue: مجموع مبالغ البيع ناقص مجموع مبالغ الاسترداد
احسب net_revenue في تعبير SUM(CASE …) واحد حيث تساهم المرتجعات بمبالغها كأرقام سالبة. رتب حسب net_revenue تنازلياً.
جرّب بنفسك
SELECT category,
-- SUM(CASE ...) واحدة حيث تُحسب المبالغ المستردة كقيم سالبة
FROM transactions
GROUP BY category
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.