Day 6/7 - SQL Challenge π―
TODAYβS QUESTION:
Find departments where the average salary is above the company average.
TABLE:
Employees (id, name, department, salary)
THE SOLUTION:
SELECT
department,
AVG(salary) as avg_salary
FROM Employees
GROUP BY department
HAVING AVG(salary) > (
SELECT AVG(salary)
FROM Employees
);
BREAKDOWN:
AVG(salary) - Calculate average per department
GROUP BY department - Group employees by department
HAVING - Filter AFTER grouping (not WHERE!)
Subquery (SELECT AVG(salary)...) - Company-wide average
EXAMPLE:
Company Average: $80,000
department | avg_salary
-ββββ|ββββ
Engineering | 90,000 β (above company avg)
Sales | 75,000 β (below company avg)
Marketing | 85,000 β (above company avg)
WHY HAVING, NOT WHERE?
β β WRONG (WHERE filters BEFORE grouping)
SELECT department, AVG(salary)
FROM Employees
WHERE AVG(salary) > 80000 β ERROR!
GROUP BY department;
β β
RIGHT (HAVING filters AFTER grouping)
SELECT department, AVG(salary)
FROM Employees
GROUP BY departm...
Suggested Credits
Tags, Events, and Projects