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

COUNT مع CASE

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

يمكنك وضع تعبير CASE داخل دالة تجميعية. تكمن الحيلة في أن 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

التحدي

سهل

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

  • orders: id، customer_id، status

لكل customer_id أرجِع:

  • customer_id
  • total: إجمالي الطلبات التي أجراها ذلك العميل
  • shipped: عدد الحالات التي يكون فيها status = 'shipped'
  • cancelled: عدد الحالات التي يكون فيها status = 'cancelled'

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

جرّب بنفسك

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

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

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

تدرّب بنفسك: Playground لـ SQL