週別(月-日)の集計

今回使うテーブル

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つの期間の集計になる。

各レコードの週の頭(月曜日)の日付を取得する

SELECT num, dt, dt - (CAST(EXTRACT(isodow FROM dt) AS int) - 1) FROM t1;

その日付でGROUP BYする

SELECT SUM(num), dt - (CAST(EXTRACT(isodow FROM dt) AS int) - 1) AS _dt FROM t1 GROUP BY _dt;

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

Last-modified: 2010-11-14 (日) 04:28:38 (3258d)