* 週別(月-日)の集計 [#c98729a7]
** 今回使うテーブル [#a5fe5ddf]
num | dt
----+------------
100 | 2010-01-01
120 | 2010-01-02
40 | 2010-01-03
90 | 2010-01-04
90 | 2010-01-05
110 | 2010-01-06
60 | 2010-01-07
80 | 2010-01-08
90 | 2010-01-10
30 | 2010-01-12
月曜日から日曜日までの週別で、numの集計を取る。今回の場合、2009/12/28から2010/1/3、2010/1/4から2010/1/10、2010/1/11から2010/1/17という3つの期間の集計になる。
月曜日から日曜日までの週別でnumの集計を取る。今回の場合、2009/12/28から2010/1/3、2010/1/4から2010/1/10、2010/1/11から2010/1/17という3つの期間の集計になる。
** 各レコードの週の頭(月曜日)の日付を取得する [#ce178974]
SELECT num, dt, dt - (CAST(EXTRACT(isodow FROM dt) AS int) - 1) FROM t1;
** その日付でGROUP BYする [#md98cecd]
SELECT SUM(num), dt - (CAST(EXTRACT(isodow FROM dt) AS int) - 1) AS _dt FROM t1 GROUP BY _dt;