GROUP BY
GROUP BY
مفهوم
~17 دقيقة
GROUP BY
GROUP BY يقسم الصفوف إلى مجموعات ثم يطبق دوال التجميع على كل مجموعة. بدلاً من إجمالي كل الطلبات، يمكنك حساب الإجمالي لكل حالة: paid، draft، cancelled. هذا يحول SQL من قراءة صفوف إلى بناء تقارير.
عند استخدام GROUP BY, الأعمدة في SELECT يجب أن تكون إما ضمن التجميع أو داخل دالة تجميع. لا تخلط عموداً عشوائياً مع تجميع؛ بعض قواعد البيانات تمنع ذلك، وبعضها قد يعطي نتيجة مضللة.
مثال عملي
query.sql
Output:
كل 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
اجمع حسب status واختر status