Todas las publicaciones
post4 de junio de 2026

Encuentra el segundo salario más alto por departamento — SQL

#sql#window-functions#interview
Medium⏱️ Logic Challenge
Given an "employees" table with columns (id, name, department, salary), return the second highest salary per department. If a department has fewer than 2 distinct salaries, exclude it.
Ver solución
WITH ranked AS ( SELECT department, name, salary, DENSE_RANK() OVER ( PARTITION BY department ORDER BY salary DESC ) AS rnk FROM employees ) SELECT department, name, salary FROM ranked WHERE rnk = 2;

"Encuentra el segundo X más alto por grupo" aparece en entrevistas porque prueba si entiendes window functions versus agregados simples. MAX() solo te da el más alto. Para el segundo, necesitas ranking.

El patrón: rankea filas dentro de cada grupo por la columna de interés usando DENSE_RANK() OVER (PARTITION BY grupo ORDER BY columna DESC), luego filtra a rank = 2. DENSE_RANK maneja empates limpio — dos personas empatadas en primer lugar ambas reciben rank 1, y la siguiente persona es rank 2.