使用限制和偏移量查找列中第 N 个最大值的 SQL 查询
先决条件 - 如何从表中找到第 N 个最高工资
问题陈述:编写 SQL 查询以使用 LIMIT 和 OFFSET 从列中查找第 n 个最大值。
示例-1:
表 –账单
FLATNo. ElectricityBill 101 1000 102 1500 103 1300 201 2300 202 6700 203 7500 204 1300 301 2300
上表是公寓内所有单位的电费单。您必须在表中找到第 n 大电费单。
SELECT DISTINCT ElectricityBill AS NthHighestElectricityBill
FROM Bills
ORDER BY ElectricityBill DESC
LIMIT 1
OFFSET n-1;
这里 n 应该是一个整数,其值必须大于零。
说明:
在上面的查询中,我们使用 Order By 子句并仅选择不同的值按降序对 ElectricityBill 列的值进行排序。在按降序排序后,我们必须从顶部找到第 N 个值,因此我们使用 OFFSET n-1 从列表中消除前 n-1 个值,现在我们必须从剩余的列表中仅选择其顶部元素,为此,我们使用 LIMIT 1。
如果我们想找到第三高的电费,查询将是 -
SELECT DISTINCT ElectricityBill AS 3rdHighestElectricityBill
FROM Bills
ORDER BY ElectricityBill DESC
LIMIT 1
OFFSET 2;
上述查询的结果将是——
3rdHighestElectricityBill 2300
示例 2 :
表 -员工工资
EmployeeID SalaryInThousands 1A234 450 1D765 259 5A567 320 3B653 450 3A980 259 9R345 128 2A748 316
上表是在一家小公司工作的员工的工资。查找工资排名第四的员工 ID。
SELECT EmployeeID AS 4thHighestEarningEmployee
FROM EmployeeSalary
ORDER BY SalaryInThousands DESC
LIMIT 1
OFFSET 3;
说明:
这里没有使用不同的,因为我们需要收入在所有员工中排名第四的员工(即 316k 而不是 259k)。
上述查询的结果将是——
4thHighestEarningEmployee 2A748