• ベストアンサー

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

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で異なる会社の為、 仕方なくこのようなテーブル構成になってしまいます(><)

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

  • ベストアンサー
回答No.3

#1回答者です。 質問内容が曖昧なので、以下の通りに推測します。 単価が次々と変わり、その時点の単価(売上日時以前で、最も新しい日時の単価)で算出するものとします。 売上金額は、id+日付毎に集計するものとします。 【SQL例】 select t.id,date(k.日時) as 日付,sum(単価*回数) as 売上 from 売上単価 as t,売上回数 as k where t.id=1 and (t.id,t.日時) in(select id,max(日時) from 売上単価 where id=k.id and 日時<=k.日時 group by id ) group by t.id,日付 ;

php4
質問者

お礼

質問が少し間違っておりました。すみません。 売上回数ではなく、売上記録(ログ)でしたので、 再度質問させていただきます。 時間が絡むとSQLもプログラムも難しく思います。 参考になりました。ありがとうございます。

その他の回答 (2)

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

insert into 売上金額 C select 売上単価 A.id, sum( 売上単価 A.money ) * sum( 売上回数 B.money ) from 売上単価 A,売上回数 B where 売上単価 A.id = 1 and 売上回数 B.id=1 これで動くのかあんまり自信ないですがこんな感じのSQLでいいと思います。

回答No.1

計算方法は? 売上単価の日時以降は、その単価で売上回数の回数と掛け算するのですか? 売上回数の回数列の列名は、money?

php4
質問者

お礼

ご指摘ありがとうございます。 おっしゃる通り、単価で売上回数の回数と掛け算で、 売上回数の回数例はmoneyです。 cntにすればよかったですね。わかりずらくてすみませんです。 ご教授いただいたSQLで試して結果を報告しますね。