回答編集履歴

5

追記

2019/03/15 08:10

投稿

sazi
sazi

スコア25195

test CHANGED
@@ -34,9 +34,27 @@
34
34
 
35
35
  ```
36
36
 
37
- 但し、学校名を出身小学校の1番目にするにはもう少し工夫が必要です。
37
+ 但し、学校名を出身小学校の1番目にするには以下の様にもう少し工夫が必要です。
38
38
 
39
+ ```SQL
39
40
 
41
+ select club.名前, club.年齢, (array_agg(学校名 order by 並び))[1]
42
+
43
+ from (
44
+
45
+ select *
46
+
47
+ from baseballclub, unnest(出身小学校) with ordinality as w(出身小学校コード, 並び)
48
+
49
+ ) club
50
+
51
+ left join elementary elmnt
52
+
53
+ on club.出身小学校 @> array[elmnt.コード]
54
+
55
+ group by club.名前, club.年齢
56
+
57
+ ```
40
58
 
41
59
  出身小学校が展開された形での取得は、
42
60
 

4

訂正

2019/03/15 08:10

投稿

sazi
sazi

スコア25195

test CHANGED
@@ -34,7 +34,7 @@
34
34
 
35
35
  ```
36
36
 
37
- ※但し、出身小学校の1番目にするにはもう少し工夫が必要です。
37
+ ※但し、学校名を出身小学校の1番目にするにはもう少し工夫が必要です。
38
38
 
39
39
 
40
40
 

3

訂正

2019/03/15 07:59

投稿

sazi
sazi

スコア25195

test CHANGED
@@ -22,7 +22,7 @@
22
22
 
23
23
  ```SQL
24
24
 
25
- select club.名前,club.年齢, (array_agg(学校名 order by 出身小学校))[1] as 学校名
25
+ select club.名前,club.年齢, (array_agg(学校名))[1] as 学校名
26
26
 
27
27
  from baseballclub club
28
28
 
@@ -33,6 +33,10 @@
33
33
  group by club.名前,club.年齢
34
34
 
35
35
  ```
36
+
37
+ ※但し、出身小学校の1番目にするにはもう少し工夫が必要です。
38
+
39
+
36
40
 
37
41
  出身小学校が展開された形での取得は、
38
42
 

2

追記

2019/03/15 07:58

投稿

sazi
sazi

スコア25195

test CHANGED
@@ -34,7 +34,7 @@
34
34
 
35
35
  ```
36
36
 
37
- 小学校が展開された形での取得は、
37
+ 出身小学校が展開された形での取得は、
38
38
 
39
39
  ```SQL
40
40
 

1

追記

2019/03/15 07:53

投稿

sazi
sazi

スコア25195

test CHANGED
@@ -15,3 +15,35 @@
15
15
  ```
16
16
 
17
17
  ただ、上記だと`出身小学校`に`出身小学校[1]`の式インデックスを追加しないと遅いかもしれません。
18
+
19
+
20
+
21
+ 因みに、[配列演算子](https://www.postgresql.jp/document/9.6/html/functions-array.html)を用いて結合した場合は、
22
+
23
+ ```SQL
24
+
25
+ select club.名前,club.年齢, (array_agg(学校名 order by 出身小学校))[1] as 学校名
26
+
27
+ from baseballclub club
28
+
29
+ left join elementary elmnt
30
+
31
+ on club.出身小学校 @> array[elmnt.コード]
32
+
33
+ group by club.名前,club.年齢
34
+
35
+ ```
36
+
37
+ 小学校名が展開された形での取得は、
38
+
39
+ ```SQL
40
+
41
+ select club.名前, club.年齢, elmnt.学校名
42
+
43
+ from baseballclub club
44
+
45
+ left join elementary elmnt
46
+
47
+ on club.出身小学校 @> array[elmnt.コード]
48
+
49
+ ```