Microsoft SQL查询两个最大的资本

时间:2014-03-14 05:07:03

标签: sql sql-server

这是指令:

DocStatus表中显示两个最大的资本及其相应的公司名称。

这是表格DocStatus

DocID    Company                    Capital
2001     Teewai.com Inc.            250000.00
2002     Fave Company               250000.00
2003     Goldilocks Bakeshop Corp   500000.00
2004     Collegian Exponent Inc.    100000.00
2005     Uniphil Computer Inc.      250000.00

问题:

对此的正确查询是什么?谢谢。

500000和250000是前两名,但有3家公司的资本相同,为250000

2 个答案:

答案 0 :(得分:4)

如果您只需要最前面的2条记录,请尝试以下方法:

SELECT TOP 2 * 
FROM DocStatus
ORDER BY Capital DESC,Company

它将按Capital的降序对结果进行排序。如果多个记录具有相同的资本,它将按公司名称的升序对它们进行排序。最后,选择前2条记录。

结果将是:

DOCID   COMPANY                     CAPITAL
2003    Goldilocks Bakeshop Corp    500000
2002    Fave Company                250000

请参阅SQL Fiddle

中的结果

如果您想要拥有第一和第二高资本的公司,请使用:

SELECT TOP(2) WITH TIES * FROM DocStatus
ORDER BY Capital DESC

此子句的优点在于它可以与WITH TIES子句一起使用,以将所有类似的行检索到基本结果集。

结果将是:

DOCID   COMPANY                     CAPITAL
2003    Goldilocks Bakeshop Corp    500000
2001    Teewai.com Inc.             250000
2002    Fave Company                250000
2005    Uniphil Computer Inc.       250000

了解更多here

答案 1 :(得分:2)

试试这个!

select top(2) with ties * from table order by Capital desc

SEE DEMO