AdvancedGROUP BY & Aggregation
Classic: department with highest average salary
The query
SQL
-- Method 1: Subquery
SELECT dept_name
FROM departments
WHERE dept_id = (
SELECT dept_id
FROM employees
GROUP BY dept_id
ORDER BY AVG(salary) DESC
LIMIT 1
);
-- Method 2: RANK
SELECT dept_name, avg_salary
FROM (
SELECT
d.dept_name,
ROUND(AVG(e.salary), 2) AS avg_salary,
RANK() OVER (ORDER BY AVG(e.salary) DESC) AS rnk
FROM employees e
JOIN departments d ON e.dept_id = d.dept_id
GROUP BY d.dept_id, d.dept_name
) t
WHERE rnk = 1;Note
“Two approaches for top-N queries. RANK method handles ties (returns multiple depts if equal avg salary).