MySQL查询近30天活跃用户数

题目

+---------------+---------+
| Column Name   | Type    |
+---------------+---------+
| user_id       | int     |
| session_id    | int     |
| activity_date | date    |
| activity_type | enum    |
+---------------+---------+

该表没有包含重复数据。
activity_type 列是 ENUM(category) 类型, 从 (‘open_session’, ‘end_session’, ‘scroll_down’, ‘send_message’) 取值。
该表记录社交媒体网站的用户活动。
注意,每个会话只属于一个用户。

编写解决方案,统计截至 2019-07-27(包含2019-07-27),近 30 天的每日活跃用户数(当天只要有一条活动记录,即为活跃用户)。

以 任意顺序 返回结果表。

知识点

这题的解题思路其实很简单,但是对于“近xx天日期”的写法有几点需要记住的:

写法一:
DATEDIFF("2019-07-27",activity_date) BETWEEN 0 AND 29

写法二:

activity_date BETWEEN '2019-06-28' AND '2019-07-27'

写法三:

activity_date BETWEEN DATE_ADD('2019-07-27',INTERVAL -29 day)

个人觉得写法二在本题中是最简单的,但如果设计较长的一段时间,有时不容易把倒退的时间算对,写法三是最好的。

解答

select activity_date as day,count(distinct user_id)as active_users
from Activity 
where activity_date BETWEEN '2019-06-28' AND '2019-07-27'
group by day
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值