شبكة تعلم مع ناو

ما الفرق بين SUM(a + b) وSUM(a) + SUM(b) عند وجود NULL؟

قد يبدو جمع عمودين داخل SUM مساويا لجمع مجموع كل عمود، لكن القيم المفقودة قد تغير النتيجة. في التعبير a + b، تصبح نتيجة الصف NULL إذا كان أحد الطرفين مفقودا. عندها تتجاهل SUM التعبير كله لذلك الصف، بما فيه الطرف الذي كانت قيمته معروفة.

مثال

SELECT SUM(salary + bonus) AS combined_total,
       SUM(salary) + SUM(bonus) AS separate_total
FROM employees;

أما جمع العمودين بصورة منفصلة فيسمح لكل قيمة معروفة بالمشاركة في مجموع عمودها. ومع ذلك، إذا كان أحد العمودين مفقودا بالكامل، فقد يكون مجموعه NULL، فتكون نتيجة إضافة المجموعين مفقودة أيضا.

إذا كان المعنى المطلوب يعتبر كل قيمة مفقودة صفرا، يمكن كتابة SUM(COALESCE(salary, 0) + COALESCE(bonus, 0)). يجب أن يكون هذا قرارا مقصودا في تفسير البيانات، لأن الراتب المجهول لا يعني بالضرورة راتبا يساوي صفرا.

باختصار: وجود NULL قد يجعل جمع التعبيرات قبل التجميع مختلفا عن جمع الأعمدة كل على حدة.

هل تريد تعلّم SQL خطوة بخطوة مع تمارين عملية؟ تابع مسار SQL من الأساسيات للاحتراف.

اختبر نفسك

خمسة أسئلة سريعة، مع الإجابة والشرح بعد كل سؤال.