前提
・日付ごとにに売上実績データをgroup byしたい
・12/1 9:00- 12/2 8:59:59までが12/1のデータとして集計する
・売上のない日も0円で取得する
・テーブル定義は変えられない(集計用カラムの追加などは無し)
上記の条件を満たすために
日付の羅列のgenerate_seriesテーブルとLEFT JOINをして
結果を出す予定にしています
ここで
>・12/1 9:00- 12/2 8:59:59までが12/1のデータとして集計する
の仕様を忘れており、
このままだと、12/2 0:15の売上データは12/2分として group byされてしまうことになります
この場合SQL一本で上記の仕様を満たすSQ Lは作成できるでしょうか?
試したこと
愚直に・12/1 9:00- 12/2 8:59:59分データ ・12/2 9:00- 12/3 8:59:59のデータ・・
などsqlを日数分ループして自作で集計する方法しか思いつきませんでした。
これだと日数分SQLがコールされてしまいます。
例えば 日付の羅列をとるgenerate_seriesテーブルから取得する時間を
うまく加工して実現ができないでしょうか?
ここにfrom to列を自作して作り、それをjoinする、などはどうかなと思うのですが
SELECT CAST(generate_series AS DATE) AS tmp_date FROM generate_series(from_date, to_date, 1 day)
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/12/01 07:51
2022/12/01 08:21
2022/12/01 09:25
2022/12/01 10:32 編集
2022/12/02 00:08