我有一个名为Orders
的表和一个名为Shipping Cost
的列。我必须得到Shipping Cost
的三个最小值,并找出这三个中的最大值。我可以按升序获得三个值,但我不知道如何找到最大值。
我就这样做了:
select distinct top 3 [Shipping Cost] from Orders order by [Shipping Cost] asc;
看起来像:
Shipping Cost
0.00
4.00
5.00
我只需要获得5.00
。
谢谢你的关注。
编辑:我正在使用MS SQL Server 2008。
答案 0 :(得分:4)
您可以使用嵌套的SELECT
子句:
SELECT MAX([Shipping Cost]) FROM (
SELECT DISTINCT TOP 3 [Shipping Cost]
FROM Orders
ORDER BY [Shipping Cost] ASC
) Top3Orders;
答案 1 :(得分:1)
对于SQL Server 2008,您可以使用带有dense_rank
的子查询:
select distinct [Shipping Cost]
from (select dense_rank() over (order by [Shipping Cost]) as r, *
from Orders) as Orders
where r = 3
上查看它
如果您使用的是SQL Server 2012或更新版本,那么:
select distinct [Shipping Cost]
from Orders
order by [Shipping Cost] asc
offset 2 rows
fetch next 1 row only;
上查看它