ショボ短歌会

以下の様な3カラム(room,reservation,daytime)のデータがあったときの解析方法を教えていただきたいです。

room reservation daytime
1 空き 2015-05-01
1 空き 2015-05-02
2 予約 2015-05-01
2 予約 2015-05-02
1 予約 2015-06-01
1 空き 2015-06-02
2 予約 2015-06-01
2 予約 2015-06-02

ホテルの予約状況を想定して、各月の部屋毎の合計予約数を出したいです。
上記の例であれば、以下の様な結果

2015年5月 room1の予約数 0
2015年5月 room2の予約数 2
2015年6月 room1の予約数 1
2015年6月 room2の予約数 2

よろしくお願いします。

A 回答 (2件)

>monthだけがNULLになってしまいます。



あれ、データの投入とかなにか違うのかな・・・
以下テストデータでやってもダメでしょうか?

//元データ作成
create table hoge (room int, reservation varchar(10), daytime date);
insert into hoge values('1','空き','2015-05-01'),('1','空き','2015-05-02'),('2','予約','2015-05-01'),('2','予約','2015-05-02'),('1','予約','2015-06-01'),('1','空き','2015-06-02'),('2','予約','2015-06-01'),('2','予約','2015-06-02');

//集計
select case
when daytime BETWEEN '2015-05-01' AND '2015-05-31' then '2015年05月'
when daytime BETWEEN '2015-06-01' AND '2015-06-30' then '2015年06月'
end as month
,room,sum(reservation='予約') as reserved
from hoge
group by month,room
    • good
    • 0
この回答へのお礼

再度ありがとうございます。
できました!!ミスってました^^
ありがとうございましたm(_ _)m

お礼日時:2015/05/27 17:37

こんなかんじで



select case
when daytime BETWEEN '2015-05-01' AND '2015-05-31' then '2015年05月'
when daytime BETWEEN '2015-06-01' AND '2015-06-30' then '2015年06月'
end as month
,room,sum(reservation='予約') as reserved
from hoge
group by month,room

月表示については別途カレンダーテーブルを作っておいた方が処理は楽になります
    • good
    • 0
この回答へのお礼

ありがとうございます。書換までmysqlで出来てしまうんですね。

いい感じのデータは抽出できたのですが、なぜか
monthだけがNULLになってしまいます。
daytimeの方は「date」です。

何がいけないのでしょうか?

お礼日時:2015/05/27 15:03

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

関連するカテゴリからQ&Aを探す