プロが教えるわが家の防犯対策術!

データベースで表示算のような計算は可能ですか?

データベースで在庫数管理を行いたいのですが、集計方法がわかりません。Postgreで、以下のデータベースで計算可能な方法があれば教えてください。
データは日付と入出庫及び3/4時点での在庫数がわかった場合、
下記のテーブルをSQLなどで作成は可能でしょうか?
Excelだと簡単なのですが
------------------
日付 入出庫 在庫
3/4 0 30
3/5 10 40
3/6 -5 35
3/7 -20 20
-----------------
素案としては日付、ソート後、1つずつデータを取り出し、集計結果を在庫にUpdateする予定です。
アドバイスお願いします

A 回答 (3件)

>データは日付と入出庫及び3/4時点での在庫数がわかった場合、


>下記のテーブルをSQLなどで作成は可能でしょうか?
>Excelだと簡単なのですが
ご質問のような処理ができないデータベースでは存在価値がないですが・・・「Excelだと簡単」という点が問題です。

ExcelではExcelに適した処理、データベースにはデータベースに適した処理(Oracle、PostgeSQLなどで違いもあると思います)があるので、「Excelだと簡単」ならExcelで処理しては如何ですか?


PostgreSQLで処理する場合、下記のどちらかの方法を採用すると思いますが、どちらも簡単と思います。#1の場合、記録されているレコード数(数百万件程度までは心配ない?)が増えるに従って遅くなりますがデータベースなので、そんな遅くはないと思います。
1.入出庫データをそのまま記録し、出力時に全てのデータを計算して在庫数を算出
2..入出庫データを記録する時に、在庫数を更新して常に在庫数記録
    • good
    • 0
この回答へのお礼

回答ありがとうごさいました

お礼日時:2011/09/26 22:45

------------------


日付 入出庫 在庫
3/4 0 30
3/5 10 40
3/6 -5 35
3/7 -20 20
-----------------
の3/7の在庫は15ですよね。

表示するだけなら

select t.日付, t.入出庫,
( select t3.在庫 + sum(入出庫) from テーブル where 日付 <= t.日付 )
from テーブル t,
( select t2.在庫 from テーブル t2 where t2.日付 =
( select min(日付) from テーブル ) ) t3;

でいけます。
    • good
    • 0
この回答へのお礼

回答ありがとうごさいました

お礼日時:2011/09/26 22:45

「データベースで表示算のような計算は可能ですか?」


 可能ですが、どのようなテーブル&データ構造になっているのかが分からないと、答えようがありません。

 入庫と出庫に在庫のテーブルがあり、商品のID、日付、数量が複数存在するとして、商品のIDと日付でグルーピングして、数量の合計を求めれば、商品ID別に指定した日の入庫数と出庫数が分かります。そこまで来れば、在庫数は、「前日在庫数+入庫数-出庫数」で計算できます。
    • good
    • 0
この回答へのお礼

回答ありがとうごさいました

お礼日時:2011/09/26 22:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!