找到最好的汽车优惠

时间:2012-10-26 04:25:55

标签: sqlite

实际问题是关于优化缓存数据库,我已将其重新表述为一个简单的场景:

汽车经销商想要摆脱旧车,并将它们列在桌子上出售:

| 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命令集是什么?

1 个答案:

答案 0 :(得分:1)

查找所有未超出预算的汽车:

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)
       ) <= :Budget