SQL - GROUP BY & HAVING

Overview

GROUP BY forms groups; aggregations (COUNT, SUM, AVG, MIN, MAX) summarize each group. HAVING filters after aggregation.

SELECT department_id, COUNT(*) AS employees, AVG(salary) AS avg_salary
FROM employees
GROUP BY department_id
HAVING COUNT(*) >= 2;
SELECT department_id, COUNT(*) AS employees, AVG(salary) AS avg_salary
FROM employees
GROUP BY department_id
HAVING COUNT(*) >= 2;
SELECT department_id, COUNT(*) AS employees, AVG(salary) AS avg_salary
FROM employees
GROUP BY department_id
HAVING COUNT(*) >= 2;

Prerequisite

Load the Standard Test Data.

Expected Output

Only department_id = 1 has at least 2 employees in the seed data:

department_idemployeesavg_salary
13113333.33