شرح صفوف ومحتوى الفقرة
تقسم جملة GROUP BY الصفوف التي اجتازت شرط WHERE إلى مجموعات فرعية مستقلة بناءً على قيم عمود أو أكثر، وتُعيد صفاً ملخصاً واحداً لكل مجموعة فريدة.
- التجميع لكل مجموعة: بدلاً من حساب
COUNT(*)أوSUM()على الجدول كله، تُحسب كل دالة تجميعية داخل حدود مجموعتها فقط. - معاملة القيم الفارغة كمجموعة واحدة: يجمع محرك MySQL جميع الصفوف التي تحمل القيمة
NULLفي عمود التجميع داخل مجموعة واحدة مشتركة لعرض إحصائياتها معاً.
في MySQL 8 لم تعد جملة GROUP BY ترتّب النتائج تلقائياً؛ لذا أضف دائماً جملة ORDER BY صريحة عند الحاجة لترتيب المجموعات.
تقسيم الصفوف إلى مجموعات بـ GROUP BY ودمج القيم بدالة GROUP_CONCAT
مسار التنفيذ: FROM ثم تصفية الصفوف بـ WHERE ثم تقسيم المجموعات بـ GROUP BY ثم حساب الدوال في SELECT
SQL
-- Count orders and sum revenue per payment method
SELECT payment_method,
COUNT(*) AS orders_count,
SUM(total_usd) AS method_revenue
FROM orders
WHERE order_status = 'paid'
GROUP BY payment_method
ORDER BY method_revenue DESC;