実現したいこと
日付の範囲指定をして、その間の1時間ごと、場所ごとの滞在時間を集計したいのですが、
その際にまたデータがない時間も0で表示したいです。
どのような記述だと実現できますでしょうか。
<出力イメージ>
日付(yyyy-mm-dd hh:00) 場所 滞在時間計
2023-09-10 01:00 場所A 10
2023-09-10 02:00 場所A 20
2023-09-10 02:00 場所B 40
2023-09-10 03:00 場所B 20
2023-09-10 04:00 0
2023-09-10 05:00 0
2023-09-10 06:00 場所B 10
2023-09-10 07:00 場所A 60
・・・
2023-09-15 23:00 場所A 50
2023-09-15 23:00 場所B 5
前提
テーブル:T_01
・日付 datehour(yyyy-mm-dd hh:mm:ss)
・場所 work(文字列)
・滞在時間 stay_time(数値)
ある処理で、n秒おきにT_01にデータを書き込んでいます。
それを時間帯、場所ごとに集計しようとしています。
該当のソースコード
SQL
1SELECT 2DATE_FORMAT(t.datehour,'%Y-%m-%d %H:00') AS 日付 3 ,t.work AS 場所 4 ,sum(t.stay_time) as 滞在時間計 5FROM 6 T_01 t 7WHERE 8 DATE_FORMAT(t.datehour,'%Y%m%d') BETWEEN '20230915' AND '20230920' 9GROUP BY 日付,場所; 10
試したこと
時間ごと&場所ごとに時間を集計するところまでは確認できています。
しかし、データがある時間だけではなく、ない時間帯のデータも出力するSQL文に苦戦してます。
補足情報(FW/ツールのバージョンなど)
MySQL 8.0.31

回答2件
あなたの回答
tips
プレビュー