回答編集履歴
3
推敲
answer
CHANGED
@@ -18,7 +18,7 @@
|
|
18
18
|
group by dt, 都道府県
|
19
19
|
```
|
20
20
|
集計項目が増えたときは、sum()部分を追加します。
|
21
|
-
※crosstabだと
|
21
|
+
※crosstabだとカラムの並びを気にしなければ、変更は不要
|
22
22
|
|
23
23
|
その他の方法としては、配列に畳んで、取得した側で処理するとか
|
24
24
|
```SQL
|
2
推敲
answer
CHANGED
@@ -8,7 +8,7 @@
|
|
8
8
|
2018-01-02|青森|みかん|1
|
9
9
|
2018-01-02|北海道|みかん|5
|
10
10
|
|
11
|
-
上記のテーブルから目的の表を取り出す
|
11
|
+
上記のテーブルから目的の表を取り出すには、クロス集計を行えばいいだけです。
|
12
12
|
[crosstab](https://www.postgresql.jp/document/9.6/html/tablefunc.html)を使用して行うか、以下のようなSQLで取得できます。
|
13
13
|
```SQL
|
14
14
|
select dt, 都道府県
|
1
追記
answer
CHANGED
@@ -6,4 +6,23 @@
|
|
6
6
|
2018-01-02|北海道|りんご|1
|
7
7
|
2018-01-01|北海道|みかん|1
|
8
8
|
2018-01-02|青森|みかん|1
|
9
|
-
2018-01-02|北海道|みかん|5
|
9
|
+
2018-01-02|北海道|みかん|5
|
10
|
+
|
11
|
+
上記のテーブルから目的の表を取り出すとするには、クロス集計を行えばいいだけです。
|
12
|
+
[crosstab](https://www.postgresql.jp/document/9.6/html/tablefunc.html)を使用して行うか、以下のようなSQLで取得できます。
|
13
|
+
```SQL
|
14
|
+
select dt, 都道府県
|
15
|
+
,sum(case 区分 when 'りんご' then 値 end) as りんご
|
16
|
+
,sum(case 区分 when 'みかん' then 値 end) as みかん
|
17
|
+
from table
|
18
|
+
group by dt, 都道府県
|
19
|
+
```
|
20
|
+
集計項目が増えたときは、sum()部分を追加します。
|
21
|
+
※crosstabだと変更はカラムの並びを気にしなければ、変更は不要
|
22
|
+
|
23
|
+
その他の方法としては、配列に畳んで、取得した側で処理するとか
|
24
|
+
```SQL
|
25
|
+
select dt, 都道府県,arry_agg(区分 order by 区分),arry_agg(値 order by 区分)
|
26
|
+
from table
|
27
|
+
group by dt, 都道府県
|
28
|
+
```
|