[PostgreSQL][SQL] 週単位でレコードを纏める方法
公開日:
:
未分類 postgresql, SQL, 纏める, 週
週単位でレコードを纏めるSQL。
履歴テーブルを週単位にレポーティングする際に使用。
サンプルテーブルは以下。
正規化されてないですが、例なのでOK。
1 2 3 4 5 6 7 8 9 10 11 12 |
<tt> date_time id val 2014/05/05 1 500 2014/05/13 2 1500 2014/05/14 2 200 2014/05/20 1 800 2014/05/23 1 100 2014/05/30 4 600 2014/06/01 1 600 2014/06/05 5 50 </tt> |
select T2.week , sum(T1.val) from (select TO_DATE('2014-05-01', 'yyyy-mm-dd') + cast(s.a || 'days' AS INTERVAL) as week from generate_series(0, 40, 7) as s(a)) T2 LEFT OUTER JOIN 履歴テーブル T1 ON T1.date_time >= T2.week AND T1.date_time < T2.week + interval '7 days' group by T2.week
「select TODATE('YYYY-MM-DD', ・・・」のところに集計開始日を入れます。
ここでは、2014-05-01の木曜日を集計開始日としています。
次に、「generate_series(0, 40, 7)」のところの「40」の値を”集計したい日数”に変更します。
例)1年間の集計をとりたいのであれば365と入力
週で指定できないので面倒ですが、仕方なし。
結果は以下のようになる。
1 2 3 4 5 6 7 8 9 |
<tt> week sum 2014/05/01 500 2014/06/05 50 2014/05/15 800 2014/05/08 1700 2014/05/29 1200 2014/05/22 100 </tt> |
スポンサードリンク
関連記事
-
[Miles to Km] Compare to Km(kilometers) to Miles
Compare to Km(kilometers) to Miles for Pokemon GO
-
[Google検索] 英語優先で検索したい場合
Google検索では、現状日本から検索すると、日本語優先で表示されてしまうため、 英語ページを見る
-
[java][基本] HashMap、HashSet、ArrayListのループ処理サンプル
こんにちはkeiです。 今回は、Javaを書く上で良く使う以下3つのクラスのループ処理を書いて
スポンサードリンク
- PREV
- [RDB][SQL] JOINについて
- NEXT
- [PostgreSQL][SQL] 文字列関連