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
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس ما وراء الأساسيات
تدرّب بنفسك: Playground لـ SQL