質問: sql 集計について 集計方法がどうしてもわからないのでご教授ください。 下記のテーブルを持っています。 テーブル1では日々の売上金額を管理し、 テーブル2では一週間の日付が保存されています。(月曜日~日曜日) -------テーブル1------- 日付 売上金額 2013/09/01 3000 2013/09/02 4000 2013/09/03 2000 ・ ・ ・ 2013/09/30 1000 ----------------------- --------テーブル2--------- 日付(月) 日付(日) 2013/08/26 2013/09/01 2013/09/02 2013/09/08 ・ ・ ・ 2013/09/30 2013/10/06 ------------------------- テーブル1とテーブル2の情報をもとに テーブル3にある、日付(月)と日付(日)は、テーブル2から持ってきて、 一週間の集計を行いたいと思っております。 --------------テーブル3-------------- 日付(月) 日付(日) 売上金額 2013/08/26 2013/09/01 3000 2013/09/02 2013/09/08 6000 ・ ・ ・ 2013/09/30 2013/10/06 1000 ------------------------------------ このようにするにはどのようなsqlを組めばいいのでしょうか? sql初心者のため、難しい単語などを使わずに ご説明をしていただければと思います。 どうぞ、よろしくお願いいたします。
回答: 単純に結合して集計すればいいと思います。 select t2.日付(月), t2.日付(日), sum(t1.売上金額) as 売上金額 from テーブル2 t2 inner join テーブル1 t1 on (t1.日付 between t2.日付(月) and t2.日付(日)) group by t2.日付(月), t2.日付(日) order by t2.日付(月); もし、テーブル1にテーブル2の1レコードの期間内に該当するレコードが1件もないことがあるのであれば、 inner join(内部結合)としているところを left join(左外部結合)にしてください。 なにが難しい単語に当たるのかがこちらには分からないので、意味が分からないところはご自身で調べてみてください。