0

実際の問題は、キャッシュデータベースの最適化に関するものであり、簡単なシナリオに言い換えました。

自動車ディーラーは古い車を取り除きたいと考えており、それらを販売用に表にリストしています。

| 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......|

顧客は、固定予算内で最大数の車を選択したいと考えています。古い車が新しい車よりも優先されるか、2台の車が同じ年の場合は古い車が優先されます。

私が現在この問題について考えることができる唯一の方法は、ソートされたビューを取得し、合計が予算の制限に達するまでループで手動で価格を合計することです。次に、追加された車の数のリストを返します。

上記のシナリオに必要なSQLコマンドの最小セットは何でしょうか?

4

1 に答える 1

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
于 2012-10-26T04:43:58.987 に答える