Sqlite 找到最好的汽车交易

Sqlite 找到最好的汽车交易,sqlite,Sqlite,实际的问题是优化缓存数据库,我将其改写为一个简单的场景: 一位汽车经销商想扔掉旧车,并将其列在一张表中出售: | Car_Number | Car_Year | Car_Price | |------------|-----------|-----------| |1001........|1967.......|29000......| |1002........|1930.......|29050......| |1003........|2001.......|30000......|

实际的问题是优化缓存数据库,我将其改写为一个简单的场景:

一位汽车经销商想扔掉旧车,并将其列在一张表中出售:

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

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

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

谢谢我试图理解这里的第一个问题。对于Car表中的每个记录,您选择一个,对于该记录,在案例年份中,旧车或车号较小的车的价格总和相同,小于/等于预算。它不会返回多个记录吗?这不应该是预算吗?@僚机:啊,是的。我错过了一个节拍。要找到第一辆超出预算的车就有点棘手了。我修正了这个问题。首先,我做了一个小小的改变,找到了一辆不超出预算的车,这是一个@wingman:Slaps前额。我刚意识到这比我最初想象的要容易得多。查看我的最新修订。是的,第一个查询与您发布的更新查询相同,列出了所有此类场景,如果某辆车在购物列表中是最后一个最不受欢迎的,那么交易仍然符合预算。现在,我希望我在这里是正确的,从这个场景列表中,我们必须选择最不受欢迎的车,即最大的购物清单场景。