实际的问题是优化缓存数据库,我将其重新表述为一个简单的场景:
一个汽车经销商想要处理掉旧车,并将它们列在一个表格中出售:
| Car_Number | Car_Year | Car_Price |
|------------|-----------|-----------|
|1001........|1967.......|29000......|
|1002........|1930.......|29050......|
|1003........|2001.......|30000......|
|1004........|1980.......|10000......|
|1005........|1967.......|75000......|
|1006........|2005.......|80000......|
|1007........|1995.......|21000......|
|1008........|1920.......|55000......|客户希望在固定预算内选择最大数量的汽车,其中较旧的汽车优先于较新的汽车,或者具有较旧数量的汽车,以防两辆汽车具有相同的年份。
目前我能想到这个问题的唯一方法是获得一个排序视图,然后在循环中手动添加价格,直到总和达到预算限制。然后,返回添加的汽车数量列表。
上述场景所需的最小SQL命令集是多少?
发布于 2012-10-26 12:43:59
找出所有不会超出预算的汽车:
SELECT Car_Number, Car_Year
FROM Cars c
WHERE (SELECT SUM(Car_Price)
FROM Cars
WHERE Car_Year < c.Car_Year
OR (Car_Year = c.Car_Year AND Car_Number <= c.Car_Number)
) <= :Budgethttps://stackoverflow.com/questions/13080721
复制相似问题