sql >> Base de Datos >  >> RDS >> Mysql

Encuentra el segundo salario más alto de la mejor manera posible

Esta pregunta se hace principalmente en el momento de la entrevista a los candidatos que son nuevos o tienen 1 año de experiencia. Incluso esta pregunta me la hicieron muchas veces cuando estaba en el campo del desarrollo web.

Así que voy a mostrarle algunas formas posibles de encontrar el segundo o el enésimo salario más alto.


Para Exp:Tabla de empleados (ET)

EID Nombre del empleado Salario
1 Empleado-1 20.000
2 Empleado-2 22 000
3 Empleado-3 21 000
4 Empleado-4 19 000
5 Empleado-5 21 000

1:- Cómo encontrar el enésimo salario más alto sin condición
En este caso, puede usar métodos muy básicos de límite y máximo de sql

SELECT DISTINCT(Salary) FROM ET ORDER BY Salary DESC LIMIT n-1,1

Donde n es la posición que está buscando
Si n=2 la consulta se convertirá en

SELECT DISTINCT(state_id) FROM crm_cities ORDER BY state_id DESC LIMIT 1,1

La salida será:21 000

2:- Cómo encontrar el enésimo salario más alto donde la condición es que debe encontrar todos los 2.º empleados mejor pagados.
En este caso, puede usar la función de subconsulta de sql.

SELECT Salary FROM ET WHERE Salary = (SELECT DISTINCT(Salary) FROM ET ORDER BY Salary DESC LIMIT n-1,1)

Donde n es la posición que está buscando
Si n=2 la consulta se convertirá en

SELECT Salary FROM ET WHERE Salary = (SELECT DISTINCT(Salary) FROM ET ORDER BY Salary DESC LIMIT 1,1)

La salida será:21 000 , 21 000

3:- Cómo encontrar el segundo salario más alto sin usar condiciones LIMIT.
En este caso, puede usar las condiciones NOT IN en sql

SELECT MAX(Salary) FROM ET
WHERE Salary NOT IN (SELECT MAX(Salary) FROM ET)

La salida será:21 000

4:- Cómo encontrar el segundo salario más alto sin usar LIMIT y Sub-Query
En este caso, puede usar el método de auto-unión

SELECT MAX( E1.Salary ) FROM ET E1, ET E2 WHERE E1.Salary < E2.Salary
Output will be: 21,000

Espero que esto te ayude a encontrar la respuesta correcta según tus necesidades... 🙂

Si te gusta esta publicación, no olvides suscribirte a Mi cuaderno público para obtener más cosas útiles.