لاختيار مجموعة تكون جميع مهامها مكتملة، يمكن عد الصفوف المخالفة للشرط ثم طلب أن يكون عددها صفرا. تستخدم CASE لإعطاء المهمة المكتملة صفرا، وإعطاء أي مهمة أخرى واحدا، ثم تجمع هذه الأعداد داخل HAVING. بهذه الطريقة يشمل تعريف المخالفة الحالات غير المعروفة أيضا.
مثال
SELECT project_id
FROM tasks
GROUP BY project_id
HAVING SUM(CASE WHEN status = 'done'
THEN 0 ELSE 1 END) = 0;
إذا كانت الحالة NULL، فلن يتحقق شرط المساواة مع القيمة المطلوبة، وينتقل التعبير إلى ELSE. لذلك لا يسمح الاستعلام لمشروع ذي حالة مفقودة بالظهور وكأن جميع مهامه مكتملة. هذا تفصيل مهم عند تقييم شروط تشمل كل أفراد المجموعة.
يعرض الاستعلام المشاريع التي لها مهام موجودة في الجدول فقط. المشروع الذي لا يملك مهاما لا ينشئ مجموعة هنا، ولذلك فإن تحديد ما إذا كان ينبغي اعتباره مكتمل المهام يحتاج إلى مصدر المشاريع وقاعدة واضحة لهذا المعنى.
باختصار: اجمع عدد المخالفات واشترط صفرا، مع معالجة NULL صراحة ضمن الحالات غير المقبولة.
هل تريد تعلّم SQL خطوة بخطوة مع تمارين عملية؟ تابع مسار SQL من الأساسيات للاحتراف.