📜  使用限制和偏移量查找列中第 N 个最大值的 SQL 查询

📅  最后修改于: 2022-05-13 01:55:01.535000             🧑  作者: Mango

使用限制和偏移量查找列中第 N 个最大值的 SQL 查询

先决条件 - 如何从表中找到第 N 个最高工资
问题陈述:编写 SQL 查询以使用 LIMIT 和 OFFSET 从列中查找第 n 个最大值。

示例-1:

表 –账单

FLATNo.ElectricityBill
1011000
1021500
1031300
2012300
2026700
2037500
2041300
3012300

上表是公寓内所有单位的电费单。您必须在表中找到第 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 :

表 -员工工资

EmployeeIDSalaryInThousands
1A234450
1D765259
5A567320
3B653450
3A980259
9R345128
2A748316

上表是在一家小公司工作的员工的工资。查找工资排名第四的员工 ID。

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

说明:
这里没有使用不同的,因为我们需要收入在所有员工中排名第四的员工(即 316k 而不是 259k)。

上述查询的结果将是——

4thHighestEarningEmployee
2A748