- 締切済み
集計のSQL文を教えてください
集計で困っています。 助けてください。 uriage_date(date型) uriage_kingaku 2005/01/01 00:15 2000 2005/01/01 12:20 2500 2005/01/02 00:00 1000 ←ここは前日分(2005/01/01)に 2005/01/02 05:15 1800 2005/01/04 12:30 2300 ~ 2005/12/31 20:20 5000 2005/12/31 22:45 1200 上の様なテーブルから 売上合計(1月分) uriage_date goukei_kingaku 2005/01/01 5500 2005/01/02 1800 2005/01/03 0 ~ 2005/01/31 9000 この様に1日毎(当日00:01~翌日00:00)の売上の合計金額 を一ヶ月単位で集計したいのですが、SQL文が解りません。 00:00の売上は前日の合計に入れたいです。 データの無い日も0円として欲しいです。 よろしくおねがいします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- k_o_r_o_c_h_a_n
- ベストアンサー率55% (526/942)
違った。 select trunc(uriage_date - interval '1' minute,'dd') uriage_date,sum(uriage_kingaku) goukei_kingaku from X group by trunc(uriage_date - interval '1' minute,'dd')
- k_o_r_o_c_h_a_n
- ベストアンサー率55% (526/942)
時間をずらすだけなら・・ select trunc(uriage_date - interval '1' minute,'dd') uriage_date,sum(uriage_kingaku) goukei_kingaku from X where trunc(uriage_date - interval '1' minute,'dd') な感じで良いと思います。
- k_o_r_o_c_h_a_n
- ベストアンサー率55% (526/942)
集計処理自体は、1分間ずらして日別集計するだけの話なので、何の問題もないと思いますが、 集計すべきデータの存在しない日を集計結果に反映するのは、面倒です。 (無いモノを生成するのは、本来SQLによる”問い合わせ”ではない。) カレンダもしくは、それに準ずるデータを用いる必要があります。 (表関数とかを作れば、ロジックでカレンダを作れますけどね)
補足
回答ありがとうございます。 1分間ずらして日別集計するだけの話が上手く出来ませんTT 日毎だけであれば group by trunc(uriage_date)で出来たのですが、、、 集計すべきデータの存在しない日を集計結果に反映するのは やめておきます。
お礼
回答ありがとうございます。 おかげさまで出来ました。 助かりました。