2

sqlite を使用して設計された経費テーブルがあります。テーブルの金額列で sum 関数を使用して、ランダムな行を除外するクエリを作成したいと考えています。

サンプルExpenseテーブル

Clients          Amounts
A                  1000
B                  3000
C                  5000
D                  2000
E                  6000

上記の表の合計を 10,000 にしたいと仮定すると、合計で 10,000 になる任意の数のランダム行を返すクエリを作成したいと思います。

これまでのところ私は試しました

SELECT * 
FROM Expense Table 
GROUP BY (Clients) 
HAVING SUM(AMOUNT)=10000 

しかし、私は何も生成されませんでした

ランダム関数も試しましたが、LIMIT を指定する必要があると想定しています

4

2 に答える 2

0

あなたが説明しているのはナップザックの問題です(あなたの場合、値は重量と同じです)。

これは SQL で解決できますが (sgeddes の回答を参照)、SQL のセット指向の設計により、計算はかなり複雑で非常に遅くなります。

金額をプログラムに読み込み、そこで問題を解決する方がよいでしょう ( Wikipedia ページの疑似コードを参照してください)。

于 2013-04-16T08:04:47.817 に答える