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.