我正在一个小型的在线拍卖网站上工作,我需要一些sql来确定每个物品的售价。出价表包含以下字段:bidID,itemID,bidderID,bidAmount,bidDate。

该网站的工作原理基本上与eBay相似,如果该商品当前的价格为10美元,而“出价方A”的出价为50美元,则该商品的价格将保持为10美元,直到第二个出价者提出更高的出价为止。假设“出价方B”出价40美元,则该商品的出价为(40美元+增量)。取决于拍卖,增量是固定金额(例如5美元)或当前价格的百分比。

这就是概述。至于sql,我想我需要为每个项目找到最高和第二高的出价,并使用这些价格来确定最终价格。

找到每个项目第二高出价的最佳方法是什么?

另外,请注意,我一直使用SQL Server 2000,因此该解决方案不能包含ROW_NUMBER()或其他更新的内置函数。

最佳答案

基本上,您可以执行TOP 2,然后将其包装在SELECT语句中,仅获得所需的内容(金额较低的$)。像这样:

SELECT TOP 1 *
FROM (
   SELECT TOP 2 *
   FROM table
   WHERE <criteria match>
   ORDER BY amount DESC
) AS newTable
ORDER BY amount ASC

关于sql - 如何使用SQL查找第二高的拍卖出价,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5945777/

10-10 14:24