Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

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 users

SUM(CASE … THEN 1 ELSE 0 END) و COUNT(CASE … THEN 1 END) يعطيان نفس النتيجة لعملية العد؛ اختر الأسلوب الذي يفضله فريقك.

challenge icon

التحدي

سهل

الجداول والأعمدة المتاحة:

  • <strong>transactions</strong>: <strong>id</strong>, <strong>category</strong>, <strong>type</strong>, <strong>amount</strong>

type هو إما 'sale' أو 'refund'. لكل category قم بإرجاع:

  • category
  • net_revenue: مجموع مبالغ البيع ناقص مجموع مبالغ الاسترداد

احسب net_revenue في تعبير SUM(CASE …) واحد حيث تساهم عمليات الاسترداد بمبالغها كعدد سالب. رتب حسب net_revenue تنازلياً.

ورقة مرجعية

استخدم 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 users

SUM(CASE … THEN 1 ELSE 0 END) و COUNT(CASE … THEN 1 END) ينتجان نفس نتيجة العد.

جرّب بنفسك

SELECT category,
       -- SUM(CASE ...) واحدة حيث تُحسب المبالغ المستردة كقيم سالبة
FROM transactions
GROUP BY category
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس ما وراء الأساسيات