Considere la siguiente tabla simple:
Name Salary --------------- abc 100000 bcd 1000000 efg 40000 ghi 500000
Cómo encontrar al empleado cuyo salario es el segundo más alto. Por ejemplo, en la tabla anterior, «ghi» tiene el segundo salario más alto con 500000.
A continuación se muestra una consulta simple para encontrar al empleado cuyo salario es más alto.
select *from employee where salary=(select Max(salary) from employee);
Podemos anidar la consulta anterior para encontrar el segundo salario más alto.
select *from employee group by salary order by salary desc limit 1,1;
Hay otras formas:
SELECT name, MAX(salary) AS salary FROM employee WHERE salary IN (SELECT salary FROM employee MINUS SELECT MAX(salary) FROM employee);
SELECT name, MAX(salary) AS salary FROM employee WHERE salary <> (SELECT MAX(salary) FROM employee);
EN SQL Server usando Common Table Expression o CTE , podemos encontrar el segundo salario más alto:
WITH T AS ( SELECT * DENSE_RANK() OVER (ORDER BY Salary Desc) AS Rnk FROM Employees ) SELECT Name FROM T WHERE Rnk=2;
¿Cómo encontrar el tercer salario más grande?
Simple, podemos hacer un anidamiento más.
SELECT name, MAX(salary) AS salary FROM employee WHERE salary < (SELECT MAX(salary) FROM employee WHERE salary < (SELECT MAX(salary) FROM employee) );
Tenga en cuenta que en lugar de anidar para el segundo, tercer, etc. salario más grande, podemos encontrar el enésimo salario usando una consulta general como en MySQL:
SELECT salary FROM employee ORDER BY salary desc limit n-1,1
SELECT name, salary FROM employee A WHERE n-1 = (SELECT count(1) FROM employee B WHERE B.salary>A.salary)
Si varios empleados tienen el mismo salario.
Suponga que tiene que encontrar el cuarto salario más alto
SELECT * FROM employee WHERE salary= (SELECT DISTINCT(salary) FROM employee ORDER BY salary LIMIT 3,1);
La consulta genérica será
SELECT * FROM employee WHERE salary= (SELECT DISTINCT(salary) FROM employee ORDER BY salary DESC LIMIT n-1,1);
Esta solución es proporcionada por Mohit.
Este artículo es una contribución de Kartik. Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA