Repaso
English
Bases de datos y SQLIntermedioDB-07

¿Qué consulta devuelve el segundo salario distinto más alto?

Opciones

  1. SELECT salary FROM emp ORDER BY salary DESC LIMIT 2 (devuelve dos filas)
  2. SELECT MAX(salary) FROM emp WHERE salary < (SELECT MAX(salary) FROM emp) (Opción correcta)
  3. SELECT MIN(salary) FROM emp WHERE salary > (SELECT AVG(salary) FROM emp)
  4. 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.

Términos clave

Practica esta pregunta en Repaso