回答編集履歴

7

追記

2021/07/08 05:27

投稿

sazi
sazi

スコア25327

test CHANGED
@@ -80,7 +80,9 @@
80
80
 
81
81
 
82
82
 
83
- 同じような事をした場合に使ったツールは(pgadmin,A5-SQL,Access,Excel)辺りですね。
83
+ 同じような事をした場合に使ったツールは(サクラエディタ,pgadmin,A5-SQL,Access,Excel)辺りですね。
84
+
85
+ 特にサクラエディタは、SQLソースのメンテや、大量データの確認など非常に有用です。
84
86
 
85
87
 
86
88
 

6

推敲

2021/07/08 05:27

投稿

sazi
sazi

スコア25327

test CHANGED
@@ -17,6 +17,8 @@
17
17
 
18
18
 
19
19
  分離する事で、使う場面が絞り込まれると思います。
20
+
21
+
20
22
 
21
23
  **・記録する事**
22
24
 

5

推敲

2021/07/07 14:37

投稿

sazi
sazi

スコア25327

test CHANGED
@@ -44,11 +44,11 @@
44
44
 
45
45
  select (A.*)::tblA recA, (B.*)::tblB recB
46
46
 
47
- from tblA a inner join tblB b
47
+ from tblA a left join tblB b
48
48
 
49
49
  on a.key=b.key
50
50
 
51
- ) AB inner join tblC c
51
+ ) AB left join tblC c
52
52
 
53
53
  on (AB.recb).Key=c.key
54
54
 

4

訂正

2021/07/07 14:36

投稿

sazi
sazi

スコア25327

test CHANGED
@@ -38,7 +38,7 @@
38
38
 
39
39
  ```SQL
40
40
 
41
- select (recA).*, (recB).value, c.value
41
+ select (AB.recA).*, (AB.recB).value, c.value
42
42
 
43
43
  from (
44
44
 

3

追記

2021/07/07 14:32

投稿

sazi
sazi

スコア25327

test CHANGED
@@ -12,7 +12,11 @@
12
12
 
13
13
  ビューと条件用のクエリーではテーブルが重複しますが、分離させた方が効率的です。
14
14
 
15
+ > サブクエリ多用してしまっている
15
16
 
17
+
18
+
19
+ 分離する事で、使う場面が絞り込まれると思います。
16
20
 
17
21
  **・記録する事**
18
22
 

2

推敲

2021/07/07 14:30

投稿

sazi
sazi

スコア25327

test CHANGED
@@ -28,9 +28,9 @@
28
28
 
29
29
  `*`
30
30
 
31
+ リレーションの関係で同じ項目名があった場合のネストで、項目にエイリアスを付けないと駄目な場面で活躍します。
32
+
31
33
  例えば、(key, value)の構造を持つtblA,tblB,tblCがあったとして以下の様に記述できます。
32
-
33
- リレーションの関係で同じ項目名があった場合のネストで、項目にエイリアスを付けないと駄目な場面で活躍します。
34
34
 
35
35
  ```SQL
36
36
 

1

追記

2021/07/07 14:27

投稿

sazi
sazi

スコア25327

test CHANGED
@@ -6,7 +6,11 @@
6
6
 
7
7
   テーブルの結合条件は決まっているのですから、用途に応じて条件を変えれば良いだけにする。
8
8
 
9
-  抽出項目は削除したり追加すれば良いだけ。
9
+ 抽出項目は削除したり追加すれば良いだけ。
10
+
11
+ 条件の無いビューに対して、キーを条件にした条件用のクエリーを準備するイメージです。
12
+
13
+ ビューと条件用のクエリーではテーブルが重複しますが、分離させた方が効率的です。
10
14
 
11
15
 
12
16
 
@@ -18,7 +22,59 @@
18
22
 
19
23
  **・簡潔な記述になるようにする。**
20
24
 
21
-  複雑になるとネストが深くなったりしますが、**with**を使用したり、**テーブル構造を型**として利用する事ができるpostgresの特徴を利用すると簡潔になります。
25
+  複雑になるとネストが深くなったりしますが、**with**を使用したり、**テーブル構造を型**として利用する事ができるpostgresの特徴(`*`)を利用すると簡潔になります。
26
+
27
+
28
+
29
+ `*`
30
+
31
+ 例えば、(key, value)の構造を持つtblA,tblB,tblCがあったとして以下の様に記述できます。
32
+
33
+ リレーションの関係で同じ項目名があった場合のネストで、項目にエイリアスを付けないと駄目な場面で活躍します。
34
+
35
+ ```SQL
36
+
37
+ select (recA).*, (recB).value, c.value
38
+
39
+ from (
40
+
41
+ select (A.*)::tblA recA, (B.*)::tblB recB
42
+
43
+ from tblA a inner join tblB b
44
+
45
+ on a.key=b.key
46
+
47
+ ) AB inner join tblC c
48
+
49
+ on (AB.recb).Key=c.key
50
+
51
+ ```
52
+
53
+ **・一括のコピー&ペーストが出来る場面を探す。**
54
+
55
+ 項目の列挙や条件の列挙など、外部の文字情報を1項目ではなく纏めてコピーできると効率的です。
56
+
57
+ 矩形貼付けなどが出来るテキストエディタの活用と、インデントを揃える習慣付けで効率化が図れます。
58
+
59
+
60
+
61
+ また、処理用のテーブルを準備して貼付けして利用するような事も考えられます。
62
+
63
+
64
+
65
+ **・ツールの活用**
66
+
67
+ 分析結果の報告する場合excelが多いと思いますが、報告の為の整形の手間も見落としがちです。
68
+
69
+ SQLの結果をエクセルにコピー&ペーストするだけで済むように工夫すると良いでしょう。
70
+
71
+
72
+
73
+ postgresの場合pivotは面倒ですから、Accessでクロス集計を行うなど他のツールを使うとか、array_aggで纏めたものをエクセルの区切り位置指定で分割するとか、SQLだけではなく他にも効率化できるところがあったりします。
74
+
75
+
76
+
77
+ 同じような事をした場合に使ったツールは(pgadmin,A5-SQL,Access,Excel)辺りですね。
22
78
 
23
79
 
24
80