ينشئ GROUP BY مجموعات من الصفوف الموجودة بعد تطبيق شروط التصفية. إذا لم يبق أي صف، فلن توجد قيمة مفتاح يمكن إنشاء مجموعة لها، ولذلك تكون النتيجة خالية من الصفوف. يختلف هذا عن التجميع العام دون مفتاح، الذي يستطيع إعادة صف واحد يحتوي على عدد يساوي صفرا.
مثال
SELECT customer_id, COUNT(*) AS order_count
FROM orders
WHERE amount > 1000
GROUP BY customer_id;
إذا لم يوجد طلب يتجاوز ألفا، فلن يعرض الاستعلام العملاء مع أعداد صفرية، بل لن يعرض أي عميل. ليس لدى التجميع قائمة مستقلة بكل العملاء المحتملين، فهو يرى فقط الصفوف التي نجت من شرط مبلغ الطلب.
كذلك لا يؤدي تغليف المجموع باستخدام COALESCE إلى إنشاء مجموعة مفقودة. تستطيع الدالة استبدال قيمة داخل صف موجود، لكنها لا تضيف صفوفا لم ينتجها الاستعلام. عرض العملاء دون طلبات يحتاج إلى مصدر يحتوي على العملاء أنفسهم.
باختصار: عندما لا توجد صفوف تدخل في تجميع ذي مفتاح، لا توجد مجموعات ولا صفوف ناتجة.
هل تريد تعلّم SQL خطوة بخطوة مع تمارين عملية؟ تابع مسار SQL من الأساسيات للاحتراف.