回答編集履歴

3

修正

2017/04/24 16:22

投稿

SVC34
SVC34

スコア1149

test CHANGED
@@ -100,62 +100,8 @@
100
100
 
101
101
 
102
102
 
103
-
104
-
105
- GROUP BYは、全体が偶数かつ中央値に同じ値が複数存在する場合に、重複を排除するす。
103
+ -- 冗長な説明だっ削除 --
106
104
 
107
105
 
108
106
 
109
- |income|
110
-
111
- |--:|
112
-
113
- |1|
114
-
115
- |2|
116
-
117
- |3|
118
-
119
- |3|
120
-
121
-
122
-
123
- |T1.income|T2.income|>=|<=|
124
-
125
- |--:|--:|--:|--:|
126
-
127
- |1|1|1|1|
128
-
129
- |1|2|0|1|
130
-
131
- |1|3|0|1|
132
-
133
- |1|3|0|1|
134
-
135
- |2|1|1|0|
136
-
137
- |2|2|1|1|
138
-
139
- |2|3|0|1|
140
-
141
- |2|3|0|1|
142
-
143
- |3|1|1|0|
144
-
145
- |3|2|1|0|
146
-
147
- |3|3|1|1|
148
-
149
- |3|3|1|1|
150
-
151
- |3|1|1|0|
152
-
153
- |3|2|1|0|
154
-
155
- |3|3|1|1|
156
-
157
- |3|3|1|1|
158
-
159
-
160
-
161
- このよう場合HAVING句で2, 3, 3が抽出されますが、GROUP BYにより3の重複が取り除かれ、AVG(2, 3)で正しく中央値が計算されます。なお、GROUP BYとDISTINCTは役割が重複してるためどちらか一方でいいはずです。同じくミックさんによる「SQL実践入門」でも同様のSQLが掲載されていますが、そこではDISTINCTはつけられていません。
107
+ お、DISTINCTはGROUP BYが既使用されてるため不要なはずです。同じくミックさんによる「SQL実践入門」でも同様のSQLが掲載されていますが、そこではDISTINCTはつけられていません。

2

追記

2017/04/24 16:22

投稿

SVC34
SVC34

スコア1149

test CHANGED
@@ -102,7 +102,7 @@
102
102
 
103
103
 
104
104
 
105
- DISTINCTが使用されているのは、全体が偶数かつ中央値に同じ値が複数存在する場合に、重複を排除するためです。
105
+ GROUP BYは、全体が偶数かつ中央値に同じ値が複数存在する場合に、重複を排除するためです。
106
106
 
107
107
 
108
108
 
@@ -158,4 +158,4 @@
158
158
 
159
159
 
160
160
 
161
- このような場合HAVING句では2, 3, 3が抽出されますが、DISTINCTにより3の重複が取り除かれ、AVG(2, 3)で正しく中央値が計算されます。
161
+ このような場合HAVING句では2, 3, 3が抽出されますが、GROUP BYにより3の重複が取り除かれ、AVG(2, 3)で正しく中央値が計算されます。なお、GROUP BYとDISTINCTは役割が重複してるためどちらか一方でいいはずです。同じくミックさんによる「SQL実践入門」でも同様のSQLが掲載されていますが、そこではDISTINCTはつけられていません。

1

誤字修正

2017/04/24 16:12

投稿

SVC34
SVC34

スコア1149

test CHANGED
@@ -92,7 +92,7 @@
92
92
 
93
93
  |4|2|1|0|
94
94
 
95
- |4|3|1|1|
95
+ |4|3|1|0|
96
96
 
97
97
  |4|4|1|1|
98
98