我正在一个小型的在线拍卖网站上工作,我需要一些sql来确定每个项目的售价。出价表包含以下字段:bidID、itemID、bidderID、bidAmount、bidDate。
该网站的工作基本上类似于eBay,如果项目目前在10美元,“投标人A”出价50美元,项目价格将保持10美元,直到第二个投标人提出更高的出价。假设“投标人B”出价40美元,那么该项目将在($40 +增量)。根据拍卖的不同,增量要么是固定金额(比如5美元),要么是当前价格的一个百分比。
这就是概述。至于sql,我认为我需要为每个项目找到最高和第二高的出价,并使用这些来确定最终价格。
,找到每个项目第二高出价的最好方法是什么?
另外,请注意,我一直在使用Server 2000,因此解决方案不能包括ROW_NUMBER()或其他最近内置的函数。
发布于 2011-05-10 05:56:02
基本上,您可以做前2,然后将其包装在SELECT语句中,并只获得您想要的(较低的美元金额)。就像这样:
SELECT TOP 1 *
FROM (
SELECT TOP 2 *
FROM table
WHERE <criteria match>
ORDER BY amount DESC
) AS newTable
ORDER BY amount ASC发布于 2011-05-10 05:57:23
我不知道这是否是最有效的解决方案,但它可能有效:
SELECT TOP 2 * FROM bids WHERE itemID = ... ORDER BY bidAmount DESC
https://stackoverflow.com/questions/5945777
复制相似问题