¿Qué consulta devuelve el segundo salario distinto más alto?
Opciones
- SELECT salary FROM emp ORDER BY salary DESC LIMIT 2 (devuelve dos filas)
- SELECT MAX(salary) FROM emp WHERE salary < (SELECT MAX(salary) FROM emp) (Opción correcta)
- SELECT MIN(salary) FROM emp WHERE salary > (SELECT AVG(salary) FROM emp)
- SELECT salary FROM emp WHERE rank = 2 ORDER BY salary DESC
Respuesta
SELECT MAX(salary) FROM emp WHERE salary < (SELECT MAX(salary) FROM emp)
Por qué
La consulta interna encuentra el salario más alto. La externa encuentra el salario más alto que sea MENOR que ese, es decir, el segundo más alto.
La opción con LIMIT 2 devuelve dos filas (los dos salarios más altos), no solo el segundo.
Alternativa: DENSE_RANK() OVER (ORDER BY salary DESC) y quedarse con el rango 2. En una entrevista, pregunta cómo deben tratarse los empates.
Recuerda
Segundo más alto = MAX por debajo del MAX.