请教下 mysql 的问题

2019-09-04 20:49:53 +08:00
 yunshui

请问下取一周来过三次的用户应该怎么取 应该怎么写

1648 次点击
所在节点    程序员
9 条回复
yunshui
2019-09-04 21:31:59 +08:00
表名:user_id, time, event

每个 id 一天同个 event 会有多个 time,我现在想要一周内来了两天以上的 id
Joshua999
2019-09-04 21:46:12 +08:00
count
luopengfei14
2019-09-04 22:00:52 +08:00
将时间转换为天的字符串,然后对 ID,天进行分组… …
大概思路是这样
romisanic
2019-09-04 22:08:14 +08:00
请先给个表结构并定义什么是"来过一次"
dallaslu
2019-09-04 22:13:33 +08:00
记录每次登录事件,然后统计指定时间内的登录次数。或者增加一个 meet_times_this_week,每次登录 +1,每周清零。
doublie
2019-09-04 23:48:14 +08:00
还不知道表结构是怎么样的!不过我觉得 group by id 应该适合你,你的一周这个范围就不知道了,不知道是最近的一周还是固定的一周
chestre
2019-09-05 00:13:05 +08:00
假设:
1,时间格式是 "yyyy-MM-dd", 可使用内置函数例如 DAY() 获得日期( day )
2,登录 event is ‘ login ’

SELECT user_id
FROM UserEvent
WHERE event='login'
GROUP BY user_id, Day(time)
HAVING count(*)>=3
chestre
2019-09-05 00:13:53 +08:00
@yunshui 忘记 Where 里面要加上一周的 condition
ColoThor
2019-09-05 09:09:20 +08:00
时间不要用内置函数,会使索引失效。比如字段是 login_time,那就 login_time >= 'yyyy-MM-dd 00:00:00' and login_time <= 'yyyy-MM-dd 23:59:59'

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/598000

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX