تجمع SUM(amount) القيم العددية المسجلة في الصفوف، بينما تجمع SUM(DISTINCT amount) كل قيمة عددية مختلفة مرة واحدة فقط. هذا الفرق يتعلق بتكرار الرقم نفسه، ولا يتعلق بتكرار معرف الطلب أو العميل. لذلك يجب تحديد معنى التكرار المطلوب إزالته قبل اختيار التعبير المناسب في الاستعلام.
مثال
SELECT SUM(amount) AS total_amount,
SUM(DISTINCT amount) AS distinct_total
FROM orders;
إذا كانت مبالغ ثلاثة طلبات هي عشرة وعشرة وعشرون، فإن المجموع المعتاد يساوي أربعين، بينما يساوي مجموع القيم المختلفة ثلاثين. الطلبان اللذان لهما المبلغ نفسه قد يكونان طلبين صحيحين ومستقلين، ولذلك لا يصح حذف أحد مبلغيهما من إجمالي المبيعات لمجرد التطابق.
تتجاهل الدالتان القيم المفقودة، لكن إضافة DISTINCT تغير التعامل مع الأرقام المتكررة. لا تستخدمها علاجا تلقائيا لتكرار الصفوف الناتج عن ربط الجداول، لأن ذلك قد يحذف مبالغ صحيحة.
باختصار: تجمع SUM(DISTINCT) الأرقام المختلفة، ولا تضمن جمع كل عملية مستقلة مرة واحدة.
هل تريد تعلّم SQL خطوة بخطوة مع تمارين عملية؟ تابع مسار SQL من الأساسيات للاحتراف.