質問編集履歴

2

【前提】の箇所で間違えて中グループと記載していたのを大グループに修正

2020/06/25 02:17

投稿

kukku-zelda
kukku-zelda

スコア22

test CHANGED
File without changes
test CHANGED
@@ -18,7 +18,7 @@
18
18
 
19
19
  ・小グループのコードは重複しない
20
20
 
21
- ・ID(要は人)は他のグループに所属していることもあるがグループ毎に別人と考える
21
+ ・ID(要は人)は他のグループに所属していることもあるがグループ毎に別人と考える
22
22
 
23
23
  ・複数小グループに属する数が2以上であればカウント
24
24
 

1

方言無しSQLにしたい要望を追記。思いついたSQLを追記。

2020/06/25 02:17

投稿

kukku-zelda
kukku-zelda

スコア22

test CHANGED
File without changes
test CHANGED
@@ -13,6 +13,8 @@
13
13
 
14
14
 
15
15
  【前提条件】
16
+
17
+ ・SQLは方言に依存しないものを使用する(標準SQLで出したい)
16
18
 
17
19
  ・小グループのコードは重複しない
18
20
 
@@ -37,6 +39,8 @@
37
39
 
38
40
 
39
41
  【テーブル内のデータ】
42
+
43
+ G_TABLE:グループテーブル
40
44
 
41
45
  |LARGE_GROUP|SMALL_GROUP|ID|
42
46
 
@@ -102,6 +106,70 @@
102
106
 
103
107
 
104
108
 
109
+ 【自分で思いつき、試してみたSQL】
110
+
111
+ ```SQL
112
+
113
+ SELECT
114
+
115
+ LARGE_GROUP,
116
+
117
+ COUNT(ID) AS 人数
118
+
119
+ FROM
120
+
121
+ G_TABLE origin
122
+
123
+ inner join
124
+
125
+ (
126
+
127
+ SELECT
128
+
129
+ KAKEMOCHI.LARGE_GROUP
130
+
131
+ KAKEMOCHI.KAKEMOCHI_ID
132
+
133
+ FROM (
134
+
135
+ SELECT
136
+
137
+ LARGE_GROUP AS KAKEMOCHI_ID_LG,
138
+
139
+ ID AS KAKEMOCHI_ID,
140
+
141
+ COUNT(SMALL_GROUP) AS JOINCOUNT
142
+
143
+ FROM
144
+
145
+ G_TABLE
146
+
147
+ GROUP BY
148
+
149
+ LARGE_GROUP,
150
+
151
+ ID
152
+
153
+  HAVING JOINCOUNT > 1
154
+
155
+ ) KAKEMOCHI --複数小グループに属している人の大グループとIDを出したテーブル
156
+
157
+ ON
158
+
159
+ origin.LARGE_GROUP = KAKEMOCHI.LARGE_GROUP
160
+
161
+ AND origin.ID = KAKEMOCHI.ID
162
+
163
+ GROUP BY
164
+
165
+ origin.LARGE_GROUP
166
+
167
+
168
+
169
+ ```
170
+
171
+
172
+
105
173
 
106
174
 
107
175
  よろしくお願いします。