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