使用极限和偏移
查找列中第 n 个最大值的 SQL 查询
原文:https://www . geesforgeks . org/SQL-查询查找第 n 个最大列值-使用限制和偏移量/
先决条件–如何从表中找到第 n 个最高工资 问题陈述:使用 LIMIT 和 OFFSET 编写一个 SQL 查询从列中找到第 n 个最大值。
示例-1 :
表格–账单
| 公寓号。 | 电费账单 | | --- | --- | | One hundred and one | One thousand | | One hundred and two | One thousand five hundred | | One hundred and three | One thousand three hundred | | Two hundred and one | Two thousand three hundred | | Two hundred and two | Six thousand seven hundred | | Two hundred and three | Seven thousand five hundred | | Two hundred and four | One thousand three hundred | | Three hundred and one | Two thousand three hundred |上表列出了一套公寓所有公寓的电费账单。你必须找到表格中第 n 大的电费账单。
SELECT DISTINCT ElectricityBill AS NthHighestElectricityBill
FROM Bills
ORDER BY ElectricityBill DESC
LIMIT 1
OFFSET n-1;
这里 n 应该是一个整数,其值必须大于零。
解释: 在上面的查询中,我们使用 Order By 子句并通过仅选择不同的值,以降序对电费列的值进行排序。在按降序排序之后,我们必须从顶部找到第 N 个值,因此我们使用了 OFFSET n-1,它从列表中删除了顶部的 n-1 个值,现在从剩余的列表中,我们必须只选择它的顶部元素,为此我们使用了 LIMIT 1。
如果我们想找到第三高的电费账单,查询将是–
SELECT DISTINCT ElectricityBill AS 3rdHighestElectricityBill
FROM Bills
ORDER BY ElectricityBill DESC
LIMIT 1
OFFSET 2;
上述查询的结果将是–
| 3 高成本电力法案 | | --- | | Two thousand three hundred |示例-2 :
表–员工工资
Employee ID | [Salary residence] |
---|---|
【T134】 |
上表是在小公司工作的员工的工资。找到收入第四高的员工 id。
SELECT EmployeeID AS 4thHighestEarningEmployee
FROM EmployeeSalary
ORDER BY SalaryInThousands DESC
LIMIT 1
OFFSET 3;
解释: 这里不使用 distinct,因为我们需要收入在所有员工中排名第四的员工(即 316k 而不是 259k)。
上述查询的结果将是–
| 第四高等教育雇主 | | --- | | 2a 748 |版权属于:月萌API www.moonapi.com,转载请注明出处