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

回答編集履歴

3

修正

2017/04/24 16:22

投稿

SVC34
SVC34

スコア1149

answer CHANGED
@@ -49,33 +49,6 @@
49
49
  |4|4|1|1|
50
50
 
51
51
 
52
+ -- 冗長な説明だったので削除 --
52
53
 
53
- GROUP BYは、全体が偶数かつ中央値に同じ値が複数存在する場合に、重複を排除するためです。
54
-
55
- |income|
56
- |--:|
57
- |1|
58
- |2|
59
- |3|
60
- |3|
61
-
62
- |T1.income|T2.income|>=|<=|
63
- |--:|--:|--:|--:|
64
- |1|1|1|1|
65
- |1|2|0|1|
66
- |1|3|0|1|
67
- |1|3|0|1|
68
- |2|1|1|0|
69
- |2|2|1|1|
70
- |2|3|0|1|
71
- |2|3|0|1|
72
- |3|1|1|0|
73
- |3|2|1|0|
74
- |3|3|1|1|
75
- |3|3|1|1|
76
- |3|1|1|0|
77
- |3|2|1|0|
78
- |3|3|1|1|
79
- |3|3|1|1|
80
-
81
- このよう場合HAVING句では2, 3, 3が抽出されますが、GROUP BYにより3の重複取り除かれ、AVG(2, 3)で正しく中央値が計算されます。なお、GROUP BYとDISTINCTは役割が重複してるためどちらか一方でいいはずです。同じくミックさんによる「SQL実践入門」でも同様のSQLが掲載されていますが、そこではDISTINCTはつけられていません。
54
+ DISTINCTはGROUP BYが既に使用されてるため不要なはずです。同じくミックさんによる「SQL実践入門」でも同様のSQLが掲載されていますが、そこではDISTINCTはつけられていません。

2

追記

2017/04/24 16:22

投稿

SVC34
SVC34

スコア1149

answer CHANGED
@@ -50,7 +50,7 @@
50
50
 
51
51
 
52
52
 
53
- DISTINCTが使用されているのは、全体が偶数かつ中央値に同じ値が複数存在する場合に、重複を排除するためです。
53
+ GROUP BYは、全体が偶数かつ中央値に同じ値が複数存在する場合に、重複を排除するためです。
54
54
 
55
55
  |income|
56
56
  |--:|
@@ -78,4 +78,4 @@
78
78
  |3|3|1|1|
79
79
  |3|3|1|1|
80
80
 
81
- このような場合HAVING句では2, 3, 3が抽出されますが、DISTINCTにより3の重複が取り除かれ、AVG(2, 3)で正しく中央値が計算されます。
81
+ このような場合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

answer CHANGED
@@ -45,7 +45,7 @@
45
45
  |3|4|0|1|
46
46
  |4|1|1|0|
47
47
  |4|2|1|0|
48
- |4|3|1|1|
48
+ |4|3|1|0|
49
49
  |4|4|1|1|
50
50
 
51
51