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

このQ&Aのポイント
  • データベースで表示算のような計算は可能ですか?データベースで在庫数管理を行いたいのですが、集計方法がわかりません。Postgreで、以下のデータベースで計算可能な方法があれば教えてください。
  • Excelだと簡単なのですが、日付と入出庫及び3/4時点での在庫数がわかった場合、日付ごとにデータを取り出し、集計結果を在庫に反映する方法を教えていただけないでしょうか。
  • 素案としては日付をソートし、1つずつデータを取り出して集計結果を在庫にUpdateする予定です。データベースではこのような計算が可能なのでしょうか?
回答を見る
  • ベストアンサー

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

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

noname#141015
noname#141015

質問者が選んだベストアンサー

  • ベストアンサー
  • nora1962
  • ベストアンサー率60% (431/717)
回答No.2

------------------ 日付 入出庫 在庫 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; でいけます。

noname#141015
質問者

お礼

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

その他の回答 (2)

  • PXU10652
  • ベストアンサー率38% (777/1993)
回答No.3

「データベースで表示算のような計算は可能ですか?」  可能ですが、どのようなテーブル&データ構造になっているのかが分からないと、答えようがありません。  入庫と出庫に在庫のテーブルがあり、商品のID、日付、数量が複数存在するとして、商品のIDと日付でグルーピングして、数量の合計を求めれば、商品ID別に指定した日の入庫数と出庫数が分かります。そこまで来れば、在庫数は、「前日在庫数+入庫数-出庫数」で計算できます。

noname#141015
質問者

お礼

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

  • gtx456gtx
  • ベストアンサー率18% (194/1035)
回答No.1

>データは日付と入出庫及び3/4時点での在庫数がわかった場合、 >下記のテーブルをSQLなどで作成は可能でしょうか? >Excelだと簡単なのですが ご質問のような処理ができないデータベースでは存在価値がないですが・・・「Excelだと簡単」という点が問題です。 ExcelではExcelに適した処理、データベースにはデータベースに適した処理(Oracle、PostgeSQLなどで違いもあると思います)があるので、「Excelだと簡単」ならExcelで処理しては如何ですか? PostgreSQLで処理する場合、下記のどちらかの方法を採用すると思いますが、どちらも簡単と思います。#1の場合、記録されているレコード数(数百万件程度までは心配ない?)が増えるに従って遅くなりますがデータベースなので、そんな遅くはないと思います。 1.入出庫データをそのまま記録し、出力時に全てのデータを計算して在庫数を算出 2..入出庫データを記録する時に、在庫数を更新して常に在庫数記録

noname#141015
質問者

お礼

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

関連するQ&A

  • Accessのレポートで日々の在庫数を求めるには?

    現在在庫管理のAccessアプリケーションを作っています。 商品別の指定期間の入出庫履歴の一覧をテーブルを基にしたレポートで表現したいと思っています。 データ基となる[T_商品別期間集計]の大まかな構成は以下の通りです。 (クエリにて指定のアイテムを指定期間で抽出しテーブルに書き込んであります) 日付 , 時刻 , 業務区分 , 前月繰越数 , 期間入庫数 , 期間返品数 , 期間出庫数 , 出庫先ID 2007/06/29 , , 7 , 52 , 1 , 0 , 0 , 0 , 0 2007/07/03 , , 2 , 0 , 0 , 1 , 0 , 0 , 0 2007/07/03 , 10:27:05 , 4 , 0 , 0 , 0 , 1 , 0 , 15780 2007/07/03 , 8:45:15 , 3 , 0 , 0 , 0 , 0 , 1 , 15857 2007/07/03 , 10:05:30 , 3 , 0 , 0 , 0 , 0 , 1 , 15631 2007/07/03 , 10:25:05 , 3 , 0 , 0 , 0 , 0 , 1 , 15816 2007/07/03 , 10:25:30 , 3 , 0 , 0 , 0 , 0 , 1 , 15780 このテーブルを基にして日付をグルーピングしたレポートを作りました。 日付グループフッターで日付ごとの入庫、返品、出庫の各値の合計をSum関数にて計算しています。 また、それらの合計値を計算し当日増減数を同じく計算させています[txt_当日の増減]。 現在の状態から、当日のこの商品の在庫数を日付グループのフッターに表示させたいのですが、 最終棚卸日(この例では2007/06/29)から当日までの入出庫数の計算をさせるにはどのような方法がありますでしょうか。 レポート内で計算した[txt_当日の増減]の当日までの集計と2007/06/29時点の在庫数を計算させる事ができれば、、、とは思うのですが、やり方がわかりません。 お分かりになる方がいらっしゃいましたら、是非教えて頂ければ助かります。

  • SQLで残高計算

    現在 id-日付-入金-出金-残高 という5項目あるデータベースがあります。 入出金額を変更した際など、日付でソートをして、すべての行の残高データを再計算し、データを更新したいのですが、どのようなSQL分を使えばよろしいのでしょうか。 ご教授願います。

    • ベストアンサー
    • MySQL
  • データベースの設計方法について

     全くの初心者で、いろいろな書籍を参考に販売・在庫管理データベースをつくりたいと勉強しています。  環境はMicrosoft SQL Server 2008 R2 EE をサーバーにインストールして、別のクライアントパソコンから SQL Server Management Studio でデータを作成しています。  データベースとは閉じた空間で、1つのデータベース内で必要なテーブルを全て用意するものと思っていました(参考にした書籍もそうなっていました)。  しかし、ネットでいろいろ調べるとインスタンス内に複数のデータベースを作成し、それらデータベース内のテーブルは相互接続可能出来るみたいでした。  となると、データベースを設計する際 <販売管理データベース>  ・顧客情報テーブル  ・商品情報テーブル  ・在庫テーブル  ・単価テーブル  ・請求データテーブル  ・伝票テーブル  ・etc.  と1つのデータベースに全てのテーブルを用意する設計では無く <販売管理データベース>  ・伝票テーブル  ・請求データ  ・etc. <顧客情報データベース>  ・顧客情報テーブル  ・単価テーブル  ・etc. <商品情報データベース>  ・商品情報テーブル  ・在庫テーブル  ・etc.  みたいに、機能ごとにデータベースを分けて、インスタンス単位で1機能(もしくは複数機能の実装)の設計でも良いのでしょうか?  プログラム言語の、プロジェクト=インスタンス、クラス=データベースみたいな考え方が出来ればと思っています。  この方法が正しいのか誤りなのか、そもそも理解に誤りがあるのか全く見当が付きません。  一般的にはどのようにするものなのでしょうか?

  • activereportの計算式

    VB6.0でactivereportを使っています。 日付    品名  品番 入庫 出庫 在庫数  2006/08/01 りんご 0001  3     3   2006/08/01 りんご 0001     1  2   2006/08/01 りんご 0002  8   2  6 というように今在庫テーブルには品番ごとの在庫数が入っています。 それをactivereportへ出力するときに 品番を無視して在庫数を計算したいのですが どうすればいいのでしょうか? 日付    品名  品番 入庫 出庫 在庫数  2006/08/01 りんご 0001  3     3   2006/08/01 りんご 0001     1  2   2006/08/01 りんご 0002  8   2  8 というようにしたいのです。 前日の実在個数+入庫-出庫という方法を考えています どこをどのようにしたらいいのかがわかりません。 教えてください。 よろしくお願いします。

  • access2000です。

    こんばんは。 いつもお世話になります。 アクセスで困っております。教えてください。 テ-ブル1(原料マスター) コード  品名 100    A 200     B 300    C テーブル2(入出庫明細) 日付  コード  入庫  出庫 4/1   100    10 4/2   100          10 4/2      200    10 テーブル3(月初在庫) コード  在庫 100    10 200    100 300      50 クエリー1(入出庫の月合計) テーブル2より コード  入庫合計  出庫合計 100     10     10 200     10 クエリー2(在庫の算出) テーブル1の全コードを使用 コード  月初在庫 入庫合計 出庫合計 現在庫 100      10       10       10        10 200      100        10 300      50 となり、入庫や出庫にデータが入っていないコードのものは、現在庫が表示されません。入庫の合計は集計を合計としているだけです。現在庫はフィールドにビルドでテーブル1の月初在庫+入庫合計-出庫合計と入力しており、集計は演算としています。データの入っていないところを無視させて現在庫を全て表示させたいのです。 宜しくお願い致します。

  • 1年分の履歴をデータベースにするには

    単純な質問ですみません。 現在、商品の名前や価格・在庫数を商品テーブルに記録しています。 この商品の価格や在庫数の1年分(365日分)の履歴をデータベースに記録したいのですが、通常はどのような設計になるのでしょうか? 価格テーブルや在庫テーブルを作って356日分のカラムを作るのが普通ですか? あと、商品データベースには商品テーブルが一つだけあります。 もし上記のように価格テーブル、在庫テーブルを作るとしたら商品データベースの中に作るのでしょうか? それとも価格データベースの中に価格テーブル、在庫データベースの中に在庫テーブルを作るのでしょうか? 長所・短所などがありましたら教えてください。 どうぞよろしくお願い致します。

    • ベストアンサー
    • MySQL
  • 計算式とリレーションによるcountについて

    ファイルメーカーに詳しい方教えて下さい。 【環境】 win7 FM11 PRO ADV 【質問】 「集計用テーブル」 フィールド内容 (1)フィールドA(2)集計開始(グローバル・日付)(3)集計終了(グローバル・日付)(4)済フラグ(テキスト) (5)済集計用(計算) データ内容 (1)フィールドA(データ1)(2)特定期間開始日(3)特定期間終了日(4)済 (1)フィールドA(データ2)(2)特定期間開始日(3)特定期間終了日(4)済 (1)フィールドA(データ3)(2)特定期間開始日(3)特定期間終了日(4)済 「日付別フィールド」 フィールド内容 (1)日付(日付)(2)フィールドA(3)完了フラグ(テキスト) データ内容 (1)日付(2)フィールドA(データ1)(3)済 ・ ・ ・ 上記にて、特定の日付間(グローバルフィールド)によるフィールドA(データ1・データ2・データ3とありますがデータ1~3全体に関する集計)に関する「済」のcountを行なっており、リレーションにて下記のように設定しております。 日付>=集計開始 日付<=集計終了 完了フラグ=済フラグ この状態で、集計用テーブルの(5)済集計用(計算)=count(日付別フィールド::完了フラグ)を実行するときちんと、countしてくれるのですが、現在この完了フラグを手入力にて「済」と入力しています。この完了フラグを計算式(if(〇〇フィールド="XX";"済";"")と〇〇フィールドの条件により【済】or「空白」が入るような設定に変えた途端「集計用テーブル」(5)済集計用(計算)フィールドのデータが「?」と表示されるようになりました。特にリレーション等はいじった形跡もなくデータもきっちり「済」と入力されているのですが(ifによる計算結果により)、何が問題なのでしょうか? 初めての投稿になり、説明不足の点があるかとは思いますが、よろしくお願いします。 以下のようなテーブル・フィールド間にて

  • 累計表示

    以下のようなデータがある場合の累計表示方法を教えてください。 ■入退会管理テーブル    日付 |入会数|退会数    2008/05/15| 10| 2   2008/05/16| 5| 1   2008/05/19| 2| 3    : このデータを利用して日付ごとの会員累計を表示したいです。 ■表示したいSelect文  日付 |入会数|退会数|会員累計    2008/05/15| 10| 2| 8   2008/05/16| 5| 1| 12   2008/05/19| 2| 3| 11 : 会員累計の計算式は、 (当日の入会数-当日の退会数)+(日付でソートした場合の1行前の会員累計数) です。 初歩的な質問ですみませんが、頭が困惑してしまってます。 よろしくお願いします。   

  • SQLで、同じ値が何回連続するか、カウントする方法

    1年間の天気のデータベースがあるとします。 7月のデータを抽出し日付でソート、ある日付から、その日と同じ天気が何日続いたかを、SQLで簡単に調べる方法はあるでしょうか? データベースは、ACCESSのmdb、VBでJETデータベースエンジンを使用していますので、高度なSQL文は使用できないかもしれません。 よろしくお願いします。

  • SQLクエリでデータベースが壊れる?

    AccessアプリでSQL Serverデータベースを更新しています。 データベースをODBCデータソースとして登録して、AccessdeそのODBCデータソースへのリンクテーブルを作っています。 データベースが何回か壊れたのですが、AccessVBAから発行したリンクテーブルへのSQLクエリでデータベースが壊れるようなことはあるんでしょうか? あるとしたら、そのクエリを発行すると必ず壊れると思うんですが・・・。 同じAccessアプリを使っても、データベースが壊れない環境もありますし・・・。 データベースが壊れた原因がわからなくて困っています。 Windows 7、SQL Server 2008 R2 Express です。