回答編集履歴
3
SQL修正
test
CHANGED
@@ -49,3 +49,37 @@
|
|
49
49
|
```
|
50
50
|
|
51
51
|
分析関数を使えばもっとすっきりするかもしれません。
|
52
|
+
|
53
|
+
|
54
|
+
|
55
|
+
---
|
56
|
+
|
57
|
+
2016/01/21 追記
|
58
|
+
|
59
|
+
left joinより上の部分をdistinctにして重複ユーザーを除去しました。
|
60
|
+
|
61
|
+
```SQL
|
62
|
+
|
63
|
+
select a.access_month, b.newer_count, a.all_count - b.newer_count as repeater_count
|
64
|
+
|
65
|
+
from (
|
66
|
+
|
67
|
+
select access_month, count(*) as all_count
|
68
|
+
|
69
|
+
from (
|
70
|
+
|
71
|
+
select distinct user_id, substr(access_day, 1, 7) as access_month
|
72
|
+
|
73
|
+
from access_record
|
74
|
+
|
75
|
+
where access_type = 101
|
76
|
+
|
77
|
+
)
|
78
|
+
|
79
|
+
group by access_month
|
80
|
+
|
81
|
+
) a
|
82
|
+
|
83
|
+
以下同じ
|
84
|
+
|
85
|
+
```
|
2
コメント追加
test
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
access_dayではなく、月をベースに集計すれば良いと思います。
|
1
|
+
ご質問のSQLのサブクエリーは(access_dayではなく)月を返すようにし、その月をベースに集計すれば良いと思います。
|
2
2
|
|
3
3
|
- 月ごとの新規ユーザー数
|
4
4
|
|
1
誤字の修正
test
CHANGED
@@ -4,7 +4,9 @@
|
|
4
4
|
|
5
5
|
- 月ごとの全アクセス数
|
6
6
|
|
7
|
-
この2つ
|
7
|
+
この2つの結果セットを外部結合することで「月ごとの全アクセス数-新規ユーザー数=リピーター数」になると思います。
|
8
|
+
|
9
|
+
|
8
10
|
|
9
11
|
Oracleですがご参考までに。
|
10
12
|
|