我想使用下面的 Mysql 表來回答以下問題。
用戶平均活躍了多少天。(有行動)在上週?
我想按天顯示用戶平均值,其中((用戶操作不是 0)/唯一一天)在過去 7 天內。
0 表示用戶不活躍,1 表示活躍。
我仍然是 SQL 的新手,這是我迄今為止嘗試過的。我不太確定我的答案。
SELECT u.username, COUNT(u.snapshot_date) as 'active_days', a.action
FROM actions a
JOIN users u
ON a.user_id = u.user_id
WHERE NOT (a.action = 0)
GROUP BY u.username;
我的輸出
username active_days action
Albert 2 1
Paul 4 1
Ronaldo 2 1
Messi 1 1
用戶表
user_id username snapshot_date
1 Albert 2022-01-10
2 Paul 2022-01-10
3 Blessing 2022-01-10
4 Ronaldo 2022-01-22
5 Messi 2022-01-01
行動表
action_id action snapshot_date user_id
1 0 2022-01-10 1
2 1 2022-01-10 2
3 0 2022-01-10 3
4 1 2022-01-22 4
5 1 2022-01-01 5
6 0 2022-01-10 2
7 0 2022-01-10 1
8 0 2022-01-10 3
9 0 2022-01-22 2
10 0 2022-01-01 4
11 0 2022-01-10 2
12 1 2022-01-10 1
13 0 2022-01-10 3
14 1 2022-01-22 2
15 1 2022-01-01 4
16 1 2022-01-10 2
17 1 2022-01-10 2
18 0 2022-01-10 1
19 1 2022-01-22 1
20 0 2022-01-01 5
由於有 7 天,您可以將計數除以 7
SELECT u.username, COUNT(u.snapshot_date) / 7 as active_days, 1 as action
FROM actions a
JOIN users u
ON a.user_id = u.user_id
WHERE NOT (a.action = 0)
GROUP BY u.username, u.snapshot_date;
對於第二個問題,您可以平均操作的總和:
SELECT u.username, SUM(a.action) / 7 as action_days, 1 as action
FROM actions a
JOIN users u
ON a.user_id = u.user_id
WHERE NOT (a.action = 0)
GROUP BY u.username, u.snapshot_date;
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句