時間毎に単価が変わるログの集計について

このQ&Aのポイント
  • MySQL5で、売上単価と売上記録から売上金額を算出する方法について説明します。
  • 売上単価はいつでも変更可能であり、売上記録には他社から送られてくるファイルを使用します。
  • 売上記録時の単価を保存する方法と、売上集計の方法について案1と案2を比較しています。
回答を見る
  • ベストアンサー

時間毎に単価が変わるログの集計について

MySQL5で、下記の売上単価 A と売上記録 B より売上金額 C を算出可能でしょうか? ■売上単価 A (いつでも単価の変更ができる) id|datetime|money 1 |2007/4/1 12:00 |100円 1 |2007/4/1 12:29 |1円 ■売上記録 B (他社から送られてくるファイル) id|datetime 1 |2007/4/1 12:15:00 1 |2007/4/1 12:15:02 1 |2007/4/1 12:30:00 ■売上記録 C (自社で保存する) id|datetime|案1)の場合のみ売上記録時の単価も保存・・ 1 |2007/4/1 12:15:00 1 |2007/4/1 12:15:02 1 |2007/4/1 12:30:00 ■売上集計 D (自社で集計する) id|date|money 1 |2007/4/1|201円 単価は次々と変わり売上記録時の単価(売上記録時以前で、最も新しい売上単価)で 売上金額を決定し、id+日付毎に集計します。 案1)売上単価変更が少ないと過程し、 30分の間で変更のあった単価と単価変更日時を取得し、 プログラム上に時間と単価を保持し、 売上記録Bを読み込んで、プログラム上で日時を比較して単価を算出し 売上記録Cに売上記録時の単価も保存して、売上集計は月末に行う。 案2)売上記録Cは売上記録Bをそのまま保存し、 売上集計時にSQL一発で、ID、日別毎に金額を算出する。 案2のSQLは難しくてわかりませんので、案1で行こうかなと思うのですが、どちらの案が良いと思われるでしょうか? メリット、デメリットありそうですが頭がパンクしております(><)

  • php4
  • お礼率42% (373/888)
  • MySQL
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • calltella
  • ベストアンサー率49% (317/635)
回答No.1

案1) メリット 案2に比べて売上の値が正確 デメリット 随時プログラムを動かしていなくてはならずメンテナンス等が大変 案2)メリット/デメリット共に案1の逆 私の意見 案1)でいいと思います。 ちなみに案2)でやる場合は 商品単価Bテーブルを作って売上単価 Aが変更されたらそこへアップデートして 売上記録 Cと商品単価Bで売上集計 D を作成してしまう事です。 かなり実売上と差が出ると思いますが・・・

php4
質問者

お礼

質問のタイトルが売上金額 C ではなくDであり、間違えてしまったにも関わらず読み解いていただきありがとうございます。 そうですよね。やはり、私も案1)の方が整合性が取れそうなので 上司に案1)を提案してOKをもらっていた所です。 おかげさまで、自信が持てました。

関連するQ&A

  • 時間により単価が変わるログ集計について

    MySQL5で、下記の売上単価 A と売上回数 B より、 id毎に売上金額 C を算出する事は可能でしょうか? ■売上単価 A id|daytime|money 1 |2007/4/1 12:00 |100円 1 |2007/4/1 12:29 |1円 ■売上回数 B id|daytime|money 1 |2007/4/1 12:15 |100回 1 |2007/4/1 12:30 |1回 ■売上金額 C id|money 1 |2007/4/1|10001円 AとBで異なる会社の為、 仕方なくこのようなテーブル構成になってしまいます(><)

    • ベストアンサー
    • MySQL
  • アクセス クエリ・集計・計算方法について

    アクセスの集計機能を使用して、品名毎の数量の合計と金額の合計を算出しようとしていますが、 思うようにできません。どなたか教えてください。 クエリのフィールドを左から・・・ (1)年月: Format([日付],"yyyy/mm")(集計:グループ化) (2)品名(集計:グループ化) (3)品名のカウント(集計機能:カウント) (4)単価(集計:グループ化) (5)金額: [単価]*[品名のカウント](集計:グループ化) このような形でクエリを実行していますが、すべての注文が1つだけなら問題ないのですが、実際には品名には数量が掛けられている場合もあり、現在設定しているクエリ設定では正しい数量の合計と金額の合計を出すことができません。どうか集計方法をご教授いただけないでしょうか。よろしくお願いします。 ■現在のテーブルの設計とリレーションを明記します。 【A】顧客テーブル (1)顧客ID (2)発注コード (3)氏名 【B】商品テーブル (1)商品ID (2)品名 (3)単価 【C】注文テーブル (1)注文ID (2)日付 (3)顧客ID 【D】注文明細テーブル (1)注文明細ID (2)注文ID (3)商品ID (4)数量 リレーション 【A】(1)-【C】(3) 【B】(1)-【D】(3) 【C】(1)-【D】(2)

  • ACCESS 選択クエリの集計について

    そもそもテーブルの作り方が悪かったと言えるのですが、是非お知恵をお借りしたく投稿しました。 売上テーブル  売上ID 日付 得意先 売上A種テーブル 売上A種ID 売上IDNo 品目 数量 単価 合計  売上B種テーブル 売上B種ID 売上IDNo 品目 数量 単価 合計  売上C種テーブル 売上C種ID 売上IDNo 品目 数量 単価 合計  売上テーブルにメインの情報を入力し、売上A種テーブル、売上B種テーブル、売上C種テーブルに詳細情報を入力できるように売上IDと売上IDNoでリレーションシップを作成しました。 選択クエリでその日の各種の売上を集計したいのですが、必ずその日の得意先の売上の中に売上A種、売上B種、売上C種が含まれているわけではないので、選択クエリで 売上ID-グループ化 日付-グループ化 得意先-グループ化 売上A種合計-合計 売上B種合計-合計 売上C種合計-合計 とした場合、A種、B種、C種すべてに入力がなければ拾ってくれません。 入力の無いもの(売上IDNoのないもの)は0で、あるものはその合計を集計させるにはどのようにしたらよいでしょうか? 何卒、よろしくお願い申し上げます。

  • エクセル2000での集計方法

    エクセル2000を使用しております。 現在シ-トに下記の表があります。同じ項目を集計してその集計部分だけを印刷したいのです。 例)  商品番号 売上数量 売上単価 売上金額 原価単価 原価売上     A000001   100    1000     100000     500     50000 普通に集計しますと単価も足されてしまいます。よく解っていなくて申し訳ありませんが集計して表示も出来るようにするにはどうすれば良いのでしょうか?

  • 関数 「単価×売上数量」

           B     C      D        E      F     G      商品名   単価   売上数量   割引金額  消費税  箱代 5   E列の「割引金額」は、「単価」が200より小さい場合、または「売上数量」が100以上の場合は「単価×売上数量」の10%引きで表示し、それ以外の場合は「単価×売上数量」で表示。   「割引金額」の出し方を教えてください。   よろしくお願いします。

  • Accessのクエリで月集計を一括集計したい。

    こんにちは。 Accessの基本操作がわかる程度の初心者です。 毎日の売上データが下記のようにあるとして、月毎の合計を一括で集計する方法はないでしょうか? 月別、店別、商品別、担当者別、売上数計、売上金額計 現在は、クエリの売上日にパラメータを入れて、 「2012/5/1」「2012/5/31」と1月分毎に入力し、集計したものを エクセルにきりばりしていますが、とても大変で困っています。 2012/5/1 大阪店 商品A 担当者A 売上数 売上金額 2012/5/3 東京店 商品A 担当者B 売上数 売上金額 2012/5/3 大阪店 商品B 担当者C 売上数 売上金額 2012/6/1 大阪店 商品A 担当者A 売上数 売上金額 2012/6/1 大阪店 商品B 担当者C 売上数 売上金額 2012/6/3 東京店 商品A 担当者D 売上数 売上金額 2012/7/3 大阪店 商品B 担当者B 売上数 売上金額 よろしくおねがいいたします。 ver. : 2007 os : WindowsXP

  • 最新の単価を求めるExcel関数について

    例えば以下のシートがあったとします。 データシート A列:品番 B列:型式 C列:得意先名 D列:単価 E列:売上日 集計シート A列:品番 B列:型式 C列:得意先名 D列:最新単価 集計シートのABC列がデータシートのABC列と一致した場合の最新の単価を出すには集計シートのD列にどういう式で求めますか?

  • Excelで顧客データの集計

    どなたか、お知恵をお貸し下さい。 1万件くらいある顧客データで売上金額の上位順位表をつくりたいのです。 売上1位から1000位まで。 但し、そのデータ中、複数回売上のある方が重複しているので、 その場合は1回として(金額を)合算したいのです。 A列に顧客名、B列に金額として、 単純に「集計」をかけて、顧客別に集計し、 金額を「大きい金額(降順の並び替え)」からの表示で 目視はできますが、これだと例えば100位は誰か、って表示にはならないので…。 と、いうところで、どうすればいいのか煮詰まってしまいました(汗) こうしてみれば?という案をご教授いただけませんか。 よろしくお願いします。

  • 【EXCEL2003】期間中の月単価額を該当する月別に集計したい

    複数のシートにA列に総額、B列に開始日、C列に終了日、D列にBとCから算出した月数、E列にA列÷D列で算出した月単価のデータが入っています。 別の「集計用」シートのA列に年月のセルがあるのですが、B列に該当する月の合計額が自動的に反映されるするにはどうしたら良いのでしょうか。 ご教授いただければ幸いです。 例) 複数シート  A列 B列 C列 D列 E列  100,000 2009/1/15 2009/4/8 4ヶ月 25,000   45,000 2009/2/3 2009/6/30 5ヶ月 9,000 別シート(集計用)  A列 B列  2009年1月(2009/1/1) 25,000  2009年2月(2009/2/1) 34,000 どうぞよろしくお願いいたします。

  • 集計のSQLについて

    皆さんの知恵をお借りしたいと思っています。 どなたか、良い案がある方お願いいたします。 以下のテーブルがあります。 (売上テーブル) 品名   金額   購入者 ---------------------------- 鉛筆   20    Aさん 鉛筆   40    Bさん 鉛筆   30    Bさん 鉛筆   30        鉛筆   10        上のテーブルで、品名・購入者を集計キーとして、 金額を集計したい場合、 SELECT 品名,購入者,SUM(金額) FROM 売上テーブル GROUP BY 品名,購入者  というSQL文で,   品名   金額   購入者 ---------------------------- 鉛筆   20    Aさん 鉛筆   70    Bさん 鉛筆   40        という結果が得られると思いますが・・・、 これを、 品名   金額   購入者 ---------------------------- 鉛筆   20    Aさん 鉛筆   70    Bさん 鉛筆   30        鉛筆   10        という結果になるようなSQL文を作りたいのです。 購入者が入っているものについては、品名・購入者で集計して、 購入者が空欄のものは集計しないようにしたいと思っています。 UNIONを使えばできるとは思うのですが、 それ以外の方法で、1回のSQL文でできる方法があれば知りたいと思っています。 よろしくお願いします。