AzLearn

GROUP BY

GROUP BY

مفهوم ~17 دقيقة

GROUP BY

GROUP BY يقسم الصفوف إلى مجموعات ثم يطبق دوال التجميع على كل مجموعة. بدلاً من إجمالي كل الطلبات، يمكنك حساب الإجمالي لكل حالة: paid، draft، cancelled. هذا يحول SQL من قراءة صفوف إلى بناء تقارير.

عند استخدام GROUP BY, الأعمدة في SELECT يجب أن تكون إما ضمن التجميع أو داخل دالة تجميع. لا تخلط عموداً عشوائياً مع تجميع؛ بعض قواعد البيانات تمنع ذلك، وبعضها قد يعطي نتيجة مضللة.

مثال عملي

query.sql

كل status تصبح مجموعة مستقلة. التقرير الآن يجيب: ماذا حدث لكل حالة؟

ترتيب التقرير

يمكنك إضافة ORDER BY total_halalas DESC بعد GROUP BY لترتيب المجموعات حسب الناتج.

CASE WHEN — تصنيف داخل الاستعلام

CASE WHEN يضيف منطقاً شرطياً داخل SELECT أو ORDER BY أو حتى GROUP BY. مدعوم في جميع قواعد البيانات الرئيسية:

SELECT
  status,
  COUNT(*) AS order_count,
  CASE
    WHEN SUM(total_halalas) >= 10000 THEN 'كبير'
    WHEN SUM(total_halalas) >= 5000  THEN 'متوسط'
    ELSE 'صغير'
  END AS volume_label
FROM orders
GROUP BY status;

CASE WHEN لا يُنشئ عمود دائم في الجدول — هو تعبير يُحسب لحظة الاستعلام فقط.

تحدي — Challenge