按升序选择前3个值的最大值

时间:2017-11-28 18:28:39

标签: sql sql-server

我有一个名为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。

2 个答案:

答案 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

rextester.com

上查看它

如果您使用的是SQL Server 2012或更新版本,那么:

select   distinct [Shipping Cost] 
from     Orders 
order by [Shipping Cost] asc
offset   2 rows
fetch    next 1 row only;

rextester.com

上查看它