MyMisPal
→ دروس SQL
الدرس 6 من 12

GROUP BY و HAVING

GROUP BY تقسم الصفوف لمجموعات حسب عمود، وتطبق الدالة التجميعية على كل مجموعة لحالها. السؤال «كم موظف في كل قسم؟» هو بالضبط GROUP BY.

SQL
SELECT dept_id, COUNT(*) AS staff, AVG(salary) AS avg_salary
FROM employees
GROUP BY dept_id;

WHERE تصفي الصفوف قبل التجميع، وHAVING تصفي المجموعات بعد التجميع:

SQL
SELECT status, COUNT(*) AS orders
FROM orders
GROUP BY status
HAVING COUNT(*) >= 3;
انتبهقاعدة مهمة: أي عمود في SELECT ما عليه دالة تجميعية لازم يكون موجود في GROUP BY.

تمارين

تمرين 1

اعرض كل فئة category وعدد المنتجات فيها.

تمرين 2

اعرض dept_id ومجموع الرواتب للأقسام اللي مجموع رواتبها أكثر من 30000.

لقيت خطأ في هذي الصفحة، أو عندك فكرة تحسّن الموقع؟