質問編集履歴

4

正しく動いたSQLにdistinct追加。

2018/07/18 09:30

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -356,7 +356,7 @@
356
356
 
357
357
  SELECT
358
358
 
359
- id
359
+ distinct id
360
360
 
361
361
  , DATE_FORMAT(m.reg_date, '%Y-%m-%d') reg_date
362
362
 

3

正しく動いたSQLを追加。

2018/07/18 09:30

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -331,3 +331,85 @@
331
331
 
332
332
 
333
333
  183行ある。
334
+
335
+
336
+
337
+ ### 正しく動いたSQL
338
+
339
+
340
+
341
+ ```sql
342
+
343
+ SELECT
344
+
345
+ DATE_FORMAT(payment_date, '%e') day
346
+
347
+ , service_type
348
+
349
+ , sum(reg_date = payment_date) new_dau
350
+
351
+ , sum(reg_date < payment_date) old_dau
352
+
353
+ FROM
354
+
355
+ (
356
+
357
+ SELECT
358
+
359
+ id
360
+
361
+ , DATE_FORMAT(m.reg_date, '%Y-%m-%d') reg_date
362
+
363
+ , DATE_FORMAT(lc.payment_date, '%Y-%m-%d') payment_date
364
+
365
+ , service_type
366
+
367
+ FROM
368
+
369
+ dta_member m
370
+
371
+ INNER JOIN (
372
+
373
+ SELECT
374
+
375
+ payment_date
376
+
377
+ , member_id
378
+
379
+ FROM
380
+
381
+ log_charge
382
+
383
+ WHERE
384
+
385
+ status = 1
386
+
387
+ AND payment_date >= '2016-02-01 00:00:00'
388
+
389
+ AND payment_date <= '2016-02-29 23:59:59'
390
+
391
+ ) AS lc
392
+
393
+ ON m.id = lc.member_id
394
+
395
+ GROUP BY
396
+
397
+ m.id
398
+
399
+ , payment_date
400
+
401
+ ORDER BY
402
+
403
+ payment_date
404
+
405
+ , reg_date
406
+
407
+ ) AS c
408
+
409
+ GROUP BY
410
+
411
+ payment_date
412
+
413
+ , service_type
414
+
415
+ ```

2

サンプルSQLの変更。取得SQL変更後の追記。2016-02-29のレコード取得の追記。

2018/07/18 09:08

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -175,3 +175,159 @@
175
175
  mysql Ver 14.14 Distrib 5.5.60, for Linux (x86_64) using readline 5.1
176
176
 
177
177
  ```
178
+
179
+
180
+
181
+ ### 取得SQL変更
182
+
183
+
184
+
185
+ ```sql
186
+
187
+ SELECT
188
+
189
+ DATE_FORMAT(payment_date, '%e') day
190
+
191
+ , service_type
192
+
193
+ , sum(reg_date = payment_date) new_dau
194
+
195
+ , sum(reg_date < payment_date) old_dau
196
+
197
+ FROM
198
+
199
+ (
200
+
201
+ SELECT
202
+
203
+ id
204
+
205
+ , DATE_FORMAT(m.reg_date, '%Y-%m-%d') reg_date
206
+
207
+ , DATE_FORMAT(lc.payment_date, '%Y-%m-%d') payment_date
208
+
209
+ , service_type
210
+
211
+ FROM
212
+
213
+ dta_member m
214
+
215
+ INNER JOIN (
216
+
217
+ SELECT
218
+
219
+ payment_date
220
+
221
+ , member_id
222
+
223
+ FROM
224
+
225
+ log_charge
226
+
227
+ WHERE
228
+
229
+ status = 1
230
+
231
+ AND payment_date >= '2016-02-01 00:00:00'
232
+
233
+ AND payment_date <= '2016-02-29 23:59:59'
234
+
235
+ ) AS lc
236
+
237
+ ON m.id = lc.member_id
238
+
239
+ GROUP BY
240
+
241
+ m.id
242
+
243
+ ORDER BY
244
+
245
+ payment_date
246
+
247
+ , reg_date
248
+
249
+ ) AS c
250
+
251
+ GROUP BY
252
+
253
+ payment_date
254
+
255
+ , service_type
256
+
257
+ ```
258
+
259
+
260
+
261
+ 2016-02-10以降のold_dauが0件になる。
262
+
263
+
264
+
265
+ ### 2016-02-29のレコード取得
266
+
267
+
268
+
269
+ ```sql
270
+
271
+ SELECT
272
+
273
+ id
274
+
275
+ , DATE_FORMAT(m.reg_date, '%Y-%m-%d') reg_date
276
+
277
+ , DATE_FORMAT(lc.payment_date, '%Y-%m-%d') payment_date
278
+
279
+ , service_type
280
+
281
+ FROM
282
+
283
+ dta_member m
284
+
285
+ INNER JOIN (
286
+
287
+ SELECT
288
+
289
+ payment_date
290
+
291
+ , member_id
292
+
293
+ FROM
294
+
295
+ log_charge
296
+
297
+ WHERE
298
+
299
+ status = 1
300
+
301
+ AND payment_date >= '2016-02-01 00:00:00'
302
+
303
+ AND payment_date <= '2016-02-29 23:59:59'
304
+
305
+ ) AS lc
306
+
307
+ ON m.id = lc.member_id
308
+
309
+ WHERE
310
+
311
+ DATE_FORMAT(payment_date, '%Y-%m-%d') = '2016-02-29'
312
+
313
+ AND DATE_FORMAT(m.reg_date, '%Y-%m-%d') < DATE_FORMAT(lc.payment_date, '%Y-%m-%d')
314
+
315
+ GROUP BY
316
+
317
+ m.id
318
+
319
+ ORDER BY
320
+
321
+ payment_date
322
+
323
+ , reg_date
324
+
325
+ ;
326
+
327
+ 183 rows in set (0.02 sec)
328
+
329
+ ```
330
+
331
+
332
+
333
+ 183行ある。

1

テーブル構造をCREATEに変更。インサート用サンプルSQLを追加。

2018/07/18 08:50

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -96,107 +96,71 @@
96
96
 
97
97
  ```sql
98
98
 
99
- mysql> desc dta_member;
99
+ mysql> show create table dta_member;
100
100
 
101
- +------------------+--------------+------+-----+-------------------+-----------------------------+
101
+ +------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
102
102
 
103
- | Field | Type | Null | Key | Default | Extra |
103
+ | Table | Create Table |
104
104
 
105
- +------------------+--------------+------+-----+-------------------+-----------------------------+
105
+ +------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
106
106
 
107
- | id | int(11) | NO | PRI | NULL | |
107
+ | dta_member | CREATE TABLE `dta_member` (
108
108
 
109
- | site_type | int(11) | NO | | 1 | |
109
+ `id` int(11) NOT NULL,
110
110
 
111
- | service_type | int(11) | YES | | NULL | |
111
+ `service_type` int(11) DEFAULT NULL,
112
112
 
113
- | point | int(11) | NO | | 0 | |
113
+ `reg_date` datetime NOT NULL,
114
114
 
115
- | campaign_code | varchar(32) | YES | MUL | NULL | |
115
+ PRIMARY KEY (`id`),
116
116
 
117
- | status | tinyint(4) | NO | | 1 | |
117
+ KEY `reg_date` (`reg_date`)
118
118
 
119
- | stop_flg | tinyint(4) | NO | | 0 | |
119
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
120
120
 
121
- | mail_receive_flg | tinyint(4) | NO | | 0 | |
121
+ +------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
122
122
 
123
- | ua | varchar(512) | YES | | NULL | |
124
-
125
- | os | tinyint(4) | YES | | NULL | |
126
-
127
- | last_access_date | datetime | YES | MUL | NULL | |
128
-
129
- | retire_date | datetime | YES | MUL | NULL | |
130
-
131
- | reg_date | datetime | NO | MUL | NULL | |
132
-
133
- | update_date | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
134
-
135
- | memo | text | YES | | NULL | |
136
-
137
- +------------------+--------------+------+-----+-------------------+-----------------------------+
138
-
139
- 15 rows in set (0.00 sec)
123
+ 1 row in set (0.00 sec)
140
124
 
141
125
 
142
126
 
143
- mysql> desc log_charge;
127
+ mysql> show create table log_charge;
144
128
 
145
- +--------------------+--------------+------+-----+-------------------+-----------------------------+
129
+ +------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
146
130
 
147
- | Field | Type | Null | Key | Default | Extra |
131
+ | Table | Create Table |
148
132
 
149
- +--------------------+--------------+------+-----+-------------------+-----------------------------+
133
+ +------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
150
134
 
151
- | id | int(11) | NO | PRI | NULL | auto_increment |
135
+ | log_charge | CREATE TABLE `log_charge` (
152
136
 
153
- | member_id | int(11) | NO | MUL | NULL | |
137
+ `id` int(11) NOT NULL AUTO_INCREMENT,
154
138
 
155
- | price | int(11) | NO | | NULL | |
139
+ `member_id` int(11) NOT NULL,
156
140
 
157
- | point | int(11) | NO | | NULL | |
141
+ `status` smallint(6) NOT NULL DEFAULT '0' COMMENT '1:完了',
158
142
 
159
- | tax | int(11) | NO | | NULL | |
143
+ `payment_date` datetime DEFAULT NULL COMMENT '決済完了日時',
160
144
 
161
- | amount | int(11) | NO | | 0 | |
145
+ PRIMARY KEY (`id`),
162
146
 
163
- | charge_type | int(11) | NO | MUL | NULL | |
147
+ KEY `member_id` (`member_id`),
164
148
 
165
- | charge_type_method | int(11) | YES | | NULL | |
149
+ KEY `payment_date` (`payment_date`)
166
150
 
167
- | status | smallint(6) | NO | | 0 | |
151
+ ) ENGINE=InnoDB AUTO_INCREMENT=88 DEFAULT CHARSET=utf8 COMMENT='課金ログ' |
168
152
 
169
- | order_id | varchar(256) | YES | MUL | NULL | |
153
+ +------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
170
154
 
171
- | free01 | varchar(128) | YES | UNI | NULL | |
172
-
173
- | free02 | varchar(256) | YES | MUL | NULL | |
174
-
175
- | free03 | varchar(256) | YES | MUL | NULL | |
176
-
177
- | free04 | varchar(256) | YES | MUL | NULL | |
178
-
179
- | free05 | varchar(256) | YES | MUL | NULL | |
180
-
181
- | ua | varchar(512) | YES | | NULL | |
182
-
183
- | os | tinyint(4) | YES | | NULL | |
184
-
185
- | campaign_code | varchar(32) | YES | MUL | NULL | |
186
-
187
- | reg_date | datetime | NO | MUL | NULL | |
188
-
189
- | payment_date | datetime | YES | MUL | NULL | |
190
-
191
- | update_date | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
192
-
193
- | purchase_token | text | YES | | NULL | |
194
-
195
- +--------------------+--------------+------+-----+-------------------+-----------------------------+
196
-
197
- 22 rows in set (0.01 sec)
155
+ 1 row in set (0.00 sec)
198
156
 
199
157
  ```
158
+
159
+
160
+
161
+ インサート用サンプルSQL
162
+
163
+ https://drive.google.com/file/d/1xyLRD2wFNuajB2gLJ9F9jlUUyZWpNuwU/view
200
164
 
201
165
 
202
166