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