teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

4

加筆修正

2018/09/10 02:06

投稿

退会済みユーザー
answer CHANGED
@@ -12,7 +12,7 @@
12
12
  値なないことを想定して`coalesce(result.count, 0)`などとします。
13
13
 
14
14
  ```sql
15
- select d.tm, coalesce(r.count, 0) as count
15
+ select d.ym, coalesce(r.count, 0) as count
16
16
  from (
17
17
  select to_char(s.a, 'YYYYMM') as ym
18
18
  from (
@@ -27,4 +27,6 @@
27
27
  ) as r on d.ym = r.ym
28
28
  ```
29
29
 
30
- で動きますでしょうか。(動作テストできてませんけど。)
30
+ で動きますでしょうか。(動作テストできてませんけど。)
31
+ 2018年のデータだけ集計したいように見えたので、
32
+ [date_part(text, timestamp)](https://www.postgresql.jp/document/9.6/html/functions-datetime.html)()を使えば良さそうかなと。

3

見直し

2018/09/10 02:06

投稿

退会済みユーザー
answer CHANGED
@@ -4,7 +4,7 @@
4
4
  ```sql
5
5
  select to_char(s.a, 'YYYYMM') as ym
6
6
  from (
7
- select * from generate_series('2018-01-01'::timestamp, '2018-09-01'::timestamp, '+1 month'::interval)
7
+ select * from generate_series('2018-01-01'::timestamp, '2018-12-01'::timestamp, '+1 month'::interval)
8
8
  ) as s(a)
9
9
  ```
10
10
 
@@ -16,7 +16,7 @@
16
16
  from (
17
17
  select to_char(s.a, 'YYYYMM') as ym
18
18
  from (
19
- select * from generate_series('2018-01-01'::timestamp, '2018-09-01'::timestamp, '+1 month'::interval)
19
+ select * from generate_series('2018-01-01'::timestamp, '2018-12-01'::timestamp, '+1 month'::interval)
20
20
  ) as s(a)
21
21
  ) as d
22
22
  left join (

2

加筆修正

2018/09/10 01:48

投稿

退会済みユーザー
answer CHANGED
@@ -20,9 +20,10 @@
20
20
  ) as s(a)
21
21
  ) as d
22
22
  left join (
23
- SELECT to_char(date, 'YYYYMM') as ym, SUM(insert_count) as count
23
+ SELECT to_char(orders.date, 'YYYYMM') as ym, SUM(orders.insert_count) as count
24
24
  FROM orders
25
+ WHERE date_part('year', orders.date) = 2018
25
- WHERE to_char(date, '%Y') = to_char(DATE '2018-01-01', '%Y') GROUP BY to_char(date, 'YYYYMM')
26
+ GROUP BY to_char(orders.date, 'YYYYMM')
26
27
  ) as r on d.ym = r.ym
27
28
  ```
28
29
 

1

見直し

2018/09/10 01:48

投稿

退会済みユーザー
answer CHANGED
@@ -4,7 +4,7 @@
4
4
  ```sql
5
5
  select to_char(s.a, 'YYYYMM') as ym
6
6
  from (
7
- select * from generate_series('2018-01-01'::timestamp, '2018-12-01'::timestamp, '+1 month')
7
+ select * from generate_series('2018-01-01'::timestamp, '2018-09-01'::timestamp, '+1 month'::interval)
8
8
  ) as s(a)
9
9
  ```
10
10
 
@@ -16,7 +16,7 @@
16
16
  from (
17
17
  select to_char(s.a, 'YYYYMM') as ym
18
18
  from (
19
- select * from generate_series('2018-01-01'::timestamp, '2018-09-01'::timestamp, '+1 month')
19
+ select * from generate_series('2018-01-01'::timestamp, '2018-09-01'::timestamp, '+1 month'::interval)
20
20
  ) as s(a)
21
21
  ) as d
22
22
  left join (