回答編集履歴
2
変更
test
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
> 1月に課金(charge_logのcategoryがbuy)したユーザーについて、
|
2
|
+
|
3
|
+
> ユーザーごとに、ユーザーID・2月のログイン回数・2月にクエストを行った日数・2月にクエストを行った回数を出力したい。
|
4
|
+
|
5
|
+
|
6
|
+
|
1
7
|
複数のテーブルで集計する際には、集計する単位で揃える必要があります。
|
2
8
|
|
3
9
|
```SQL
|
1
質問に合わせる
test
CHANGED
@@ -5,8 +5,6 @@
|
|
5
5
|
select login.user_id
|
6
6
|
|
7
7
|
, login.cnt as login_count
|
8
|
-
|
9
|
-
, coalesce(charge.cnt, 0) as charge_count
|
10
8
|
|
11
9
|
, coalesce(quest.day_count, 0) as quest_day_count
|
12
10
|
|
@@ -18,7 +16,17 @@
|
|
18
16
|
|
19
17
|
from login_log
|
20
18
|
|
21
|
-
where MONTH(timestamp) =
|
19
|
+
where MONTH(timestamp) = 2
|
20
|
+
|
21
|
+
and user_id in (
|
22
|
+
|
23
|
+
select user_id
|
24
|
+
|
25
|
+
from charge_log
|
26
|
+
|
27
|
+
where MONTH(timestamp) = 1 and category = 'buy'
|
28
|
+
|
29
|
+
)
|
22
30
|
|
23
31
|
group by user_id
|
24
32
|
|
@@ -26,25 +34,11 @@
|
|
26
34
|
|
27
35
|
left join (
|
28
36
|
|
29
|
-
select user_id, count(*) as cnt
|
30
|
-
|
31
|
-
from charge_log
|
32
|
-
|
33
|
-
where MONTH(timestamp) = 5 and category = 'buy'
|
34
|
-
|
35
|
-
group by user_id
|
36
|
-
|
37
|
-
) charge
|
38
|
-
|
39
|
-
on login.user_id=charge.user_id
|
40
|
-
|
41
|
-
left join (
|
42
|
-
|
43
37
|
select user_id, count(*) as cnt, count(distinct date(timestamp)) as day_count
|
44
38
|
|
45
39
|
from quest_log
|
46
40
|
|
47
|
-
where MONTH(timestamp) =
|
41
|
+
where MONTH(timestamp) = 2
|
48
42
|
|
49
43
|
group by user_id
|
50
44
|
|