انتقل إلى محتوى الدرس

Splitting Rows into Summary Groups تقسيم الصفوف بـ GROUP BY

قسّم الصفوف المصفّاة إلى مجموعات مستقلة عبر GROUP BY واحسب الدوال التجميعية لكل مجموعة.
1 صفوف تعليمية
MySQL
8 مشاهدة

شرح صفوف ومحتوى الفقرة

الصف 1 شرح توضيحي

تقسم جملة GROUP BY الصفوف التي اجتازت شرط WHERE إلى مجموعات فرعية مستقلة بناءً على قيم عمود أو أكثر، وتُعيد صفاً ملخصاً واحداً لكل مجموعة فريدة.

  • التجميع لكل مجموعة: بدلاً من حساب COUNT(*) أو SUM() على الجدول كله، تُحسب كل دالة تجميعية داخل حدود مجموعتها فقط.
  • معاملة القيم الفارغة كمجموعة واحدة: يجمع محرك MySQL جميع الصفوف التي تحمل القيمة NULL في عمود التجميع داخل مجموعة واحدة مشتركة لعرض إحصائياتها معاً.

في MySQL 8 لم تعد جملة GROUP BY ترتّب النتائج تلقائياً؛ لذا أضف دائماً جملة ORDER BY صريحة عند الحاجة لترتيب المجموعات.

تقسيم الصفوف إلى مجموعات بـ GROUP BY ودمج القيم بدالة GROUP_CONCAT

مسار التنفيذ: FROM ثم تصفية الصفوف بـ WHERE ثم تقسيم المجموعات بـ GROUP BY ثم حساب الدوال في SELECT
مخطط توضيحي لدرس تجميع الصفوف بجملة GROUP BY ودمج القيم عبر GROUP CONCAT
مخطط توضيحي لدرس تجميع الصفوف بجملة GROUP BY ودمج القيم عبر GROUP CONCAT
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;