Consulta SQL para encontrar el enésimo valor más grande en una columna usando límite y compensación

Requisito previo: cómo encontrar el enésimo salario más alto de una tabla  
Declaración del problema: escriba una consulta SQL para encontrar el enésimo valor más alto de la columna usando LIMIT y OFFSET

Ejemplo 1 : 

Tabla – FACTURAS 

PISONo. Factura de electricidad
101 1000
102 1500
103 1300
201 2300
202 6700
203 7500
204 1300
301 2300

La tabla anterior tiene las facturas de electricidad de todos los pisos de un apartamento. Tienes que encontrar la enésima factura de electricidad más grande de la tabla. 

SELECT DISTINCT ElectricityBill AS NthHighestElectricityBill
FROM Bills
ORDER BY ElectricityBill DESC
LIMIT 1 
OFFSET n-1;

Aquí n debe ser un número entero cuyo valor debe ser mayor que cero. 

Explicación: 
en la consulta anterior, estamos ordenando los valores de la columna ElectricityBill en orden descendente usando la cláusula Order By y seleccionando solo valores distintos. Después de ordenarlo en orden descendente, tenemos que encontrar el valor N desde arriba, por lo que usamos OFFSET n-1, que elimina los valores n-1 superiores de la lista, ahora, de la lista restante, debemos seleccionar solo su elemento superior, para hacer eso usamos LIMIT 1. 

Si queremos encontrar la tercera factura de electricidad más alta, la consulta será: 

SELECT DISTINCT ElectricityBill AS 3rdHighestElectricityBill
FROM Bills
ORDER BY ElectricityBill DESC
LIMIT 1
OFFSET 2;

El resultado de la consulta anterior será: 

3rdHighestElectricityBill
2300

Ejemplo-2: 

Tabla – EmployeeSalary 

ID de empleado SalarioEnMiles
1A234 450
1D765 259
5A567 320
3B653 450
3A980 259
9R345 128
2A748 316

La tabla anterior tiene los salarios de los empleados que trabajan en una pequeña empresa. Encuentre la identificación del empleado que gana el cuarto salario más alto. 

SELECT EmployeeID AS 4thHighestEarningEmployee 
FROM EmployeeSalary
ORDER BY SalaryInThousands DESC
LIMIT 1 
OFFSET 3;

Explicación: 
aquí no se usa «distinto» porque necesitamos empleados cuyas ganancias ocupen el cuarto lugar entre todos los empleados (es decir, 316k, no 259k). 

El resultado de la consulta anterior será: 

4.ºEmpleado con los ingresos más altos
2A748

Publicación traducida automáticamente

Artículo escrito por kotauday08 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *