تعلم SQL وقواعد البيانات من الصفرالدرس 3 من 5
التجميع والإحصاء في SQL: COUNT وSUM وAVG وGROUP BY وHAVING
درس دوال التجميع في SQL بالعربية: COUNT وSUM وAVG وMIN وMAX، وتقسيم النتائج بـ GROUP BY، وتصفية المجموعات بـ HAVING، والفرق بين WHERE وHAVING.
محتويات الدرس
دوال التجميع تحوّل صفوفًا كثيرة إلى رقم واحد: عدد أو مجموع أو متوسط.
الدوال الأساسية
جرّب بنفسكمحرك SQLite يعمل في متصفحك مع قاعدة الطلاب والدورات
اضغط «تشغيل» لترى النتيجة هنا.
COUNT(*)عدد الصفوف، وCOUNT(city)عدد الصفوف التي فيها مدينة غير فارغة.COUNT(DISTINCT city)عدد المدن المختلفة.
GROUP BY: إحصاء لكل مجموعة
عدد الطلاب في كل مدينة:
جرّب بنفسكمحرك SQLite يعمل في متصفحك مع قاعدة الطلاب والدورات
اضغط «تشغيل» لترى النتيجة هنا.
متوسط الدرجات لكل دورة، برقمها:
جرّب بنفسكمحرك SQLite يعمل في متصفحك مع قاعدة الطلاب والدورات
اضغط «تشغيل» لترى النتيجة هنا.
قاعدة مهمة: كل عمود في SELECT ليس داخل دالة تجميع يجب أن يكون في GROUP BY.
HAVING: تصفية المجموعات
WHERE تصفّي الصفوف قبل التجميع، وHAVING تصفّي المجموعات بعده:
جرّب بنفسكمحرك SQLite يعمل في متصفحك مع قاعدة الطلاب والدورات
اضغط «تشغيل» لترى النتيجة هنا.
ترتيب التنفيذ الحقيقي
تُكتب الأجزاء بترتيب، وتُنفذ بترتيب آخر:
FROMاختيار الجدولWHEREتصفية الصفوفGROUP BYالتجميعHAVINGتصفية المجموعاتSELECTاختيار الأعمدةORDER BYالترتيبLIMITالتحديد
لهذا لا تستطيع استخدام اسم مستعار من SELECT داخل WHERE في أغلب قواعد البيانات.
تمرين
- احسب مجموع ساعات كل الدورات ومتوسط أسعارها.
- اعرض عدد الدورات التي سجل فيها كل طالب، بـ
student_id. - اعرض الطلاب الذين سجلوا في دورتين أو أكثر باستخدام HAVING.