提问人:Volodymyr 提问时间:3/26/2020 更新时间:3/26/2020 访问量:74
计算连续两天活跃的用户数量 mysql
Calculate amount of users who was active two days in a row mysql
问:
我需要计算连续两天处于活动状态的用户数量。 我有表“activity”
user_id |login_time
1234 |2019-04-15
1456年 |2019-04-15
1234 |2019-04-16
1456年 |2019-04-17
我如何计算在 15 日和 16 日活跃的用户数量。
答:
0赞
nbk
3/26/2020
#1
只有两天很容易,但如果你想计算一个月,你必须使用用户变量。
编辑: 当月
SELECT
COUNT(user_id)
FROM
(SELECT
user_id
FROM
(SELECT `user_id`, `login_time` FROM user_login
WHERE `login_time` BETWEEN CONCAT(YEAR(NOW()),'-',MONTH(NOW()),'-15')
AND CONCAT(YEAR(NOW()),'-',MONTH(NOW()),'-16'
GROUP BY `user_id`, `login_time`)
user_login)
GROUP By user_id
HAVING COUNT( user_id) = 2) a
CREATE TABLE user_login ( `user_id` INTEGER, `login_time` date ); INSERT INTO user_login (`user_id`, `login_time`) VALUES ('1234', '2019-04-15'), ('1456', '2019-04-15'), ('1456', '2019-04-15'), ('1234', '2019-04-16'), ('1456', '2019-04-17');
✓ ✓
SELECT COUNT(user_id) FROM (SELECT user_id FROM (SELECT `user_id`, `login_time` FROM user_login WHERE `login_time` BETWEEN '2019-04-15' AND '2019-04-16' GROUP BY `user_id`, `login_time`) user_login GROUP By user_id HAVING COUNT( user_id) = 2) a
| COUNT(user_id) | | -------------: | | 1 |
db<>fiddle 在这里
评论
0赞
Volodymyr
3/26/2020
也许你知道另一种制作方法?因为当我将此查询应用于我的表时,我的结果中只有一天处于活动状态的用户,以及连续两天处于活动状态的用户(我在选择中添加了 count(user_id) - 它显示 2 天,但是如果我在原始数据中检查当前用户 - 它只显示一天的活动 (
0赞
Volodymyr
3/26/2020
我理解问题 - 如果用户每天有 2 次登录 - 就像他每个时期有 2 次登录一样。如何计算每天的不同登录次数?
0赞
nbk
3/26/2020
当然,我更改了查询
评论