• 締切済み

集計の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円として欲しいです。 よろしくおねがいします。

みんなの回答

回答No.3

違った。 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')

gggg2006
質問者

お礼

回答ありがとうございます。 おかげさまで出来ました。 助かりました。

回答No.2

時間をずらすだけなら・・ 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') な感じで良いと思います。

回答No.1

集計処理自体は、1分間ずらして日別集計するだけの話なので、何の問題もないと思いますが、 集計すべきデータの存在しない日を集計結果に反映するのは、面倒です。 (無いモノを生成するのは、本来SQLによる”問い合わせ”ではない。) カレンダもしくは、それに準ずるデータを用いる必要があります。 (表関数とかを作れば、ロジックでカレンダを作れますけどね)

gggg2006
質問者

補足

回答ありがとうございます。 1分間ずらして日別集計するだけの話が上手く出来ませんTT 日毎だけであれば group by trunc(uriage_date)で出来たのですが、、、 集計すべきデータの存在しない日を集計結果に反映するのは やめておきます。

関連するQ&A