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

COUNT مع CASE

جزء من قسم ما وراء الأساسيات في رحلة SQL على Coddy — الدرس 12 من 27.

يمكنك وضع تعبير CASE داخل دالة تجميعية (aggregate). الحيلة هي أن COUNT يتجاهل NULL، لذا فإن CASE بدون ELSE يحسب فقط الصفوف التي تطابق الشرط.

SELECT
    COUNT(*) AS total,
    COUNT(CASE WHEN status = 'active' THEN 1 END) AS active_count
FROM users

الآن active_count هو عدد صفوف 'active' على الرغم من أننا لم نقم بتصفية الاستعلام بالكامل. هذه هي الحيلة وراء كل استعلام لوحة بيانات متعدد المقاييس ستكتبه على الإطلاق.

challenge icon

التحدي

سهل

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

  • <strong>orders</strong>: <strong>id</strong>, <strong>customer_id</strong>, <strong>status</strong>

لكل customer_id قم بإرجاع:

  • customer_id
  • total: إجمالي الطلبات التي قام العميل بتقديمها
  • shipped: العدد حيث status = 'shipped'
  • cancelled: العدد حيث status = 'cancelled'

قم بإرجاع العملاء الذين لديهم طلب واحد ملغى على الأقل فقط. رتب حسب customer_id.

ورقة مرجعية

استخدم CASE داخل COUNT لحساب الصفوف التي تطابق شرطاً معيناً دون تصفية الاستعلام بالكامل (تتجاهل COUNT القيمة NULL، لذا احذف عبارة ELSE):

SELECT
    COUNT(*) AS total,
    COUNT(CASE WHEN status = 'active' THEN 1 END) AS active_count
FROM users

جرّب بنفسك

SELECT customer_id,
       COUNT(*) AS total,
       -- shipped، cancelled باستخدام COUNT(CASE ...)
FROM orders
GROUP BY customer_id
-- تصفية للعملاء الذين لديهم إلغاء واحد على الأقل
ORDER BY customer_id
quiz iconاختبر نفسك

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

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