我正在一个小型的在线拍卖网站上工作,我需要一些sql来确定每件商品的销售情况。 出价表包含以下字段: bidID,itemID,bidderID,bidAmount,bidDate 。
该网站的工作原理基本上与eBay相同,如果该项目目前为10美元,“投标人A”出价为50美元,则物品价格将保持10美元,直到第二个投标人提出更高的出价。假设“投标人B”出价40美元,那么该项目将是(40美元+增量)。取决于拍卖,增量是固定金额(比如5美元)或当前价格的百分比。
这是概述。至于sql,我认为我需要找到每个项目的最高和第二高出价,并使用它们来确定最终价格。
找到每件商品的第二高出价的最佳方式是什么?
另外,就像一张纸条,我使用的是SQL Server 2000,所以解决方案不能包含ROW_NUMBER()或其他更新的内置函数。
答案 0 :(得分:7)
基本上,你可以做一个TOP 2,然后将它包装在一个SELECT语句中,只获得你想要的那个(较低的$ amount)。像这样:
SELECT TOP 1 *
FROM (
SELECT TOP 2 *
FROM table
WHERE <criteria match>
ORDER BY amount DESC
) AS newTable
ORDER BY amount ASC
答案 1 :(得分:0)
我不知道这是否是最有效的解决方案,但它可能有效:
SELECT TOP 2 * FROM bids WHERE itemID = ... ORDER BY bidAmount DESC