Problem: 1141. 查询近30天活跃用户数
👨🏫 参考题解
-- 选择活动日期作为天数,计算每天的唯一活跃用户数
select activity_date as day, count(distinct user_id) as active_users
from activity
-- 从2019年7月27日开始的30天内
where datediff('2019-07-27', activity_date) >= 0
AND datediff('2019-07-27', activity_date) < 30
-- 按活动日期分组,以便为每一天计算活跃用户数
group by activity_date;
解释:
-
select activity_date as day, count(distinct user_id) as active_users
:activity_date as day
: 选择activity_date
字段,并将其重命名为day
,以便于理解。count(distinct user_id) as active_users
: 计算user_id
字段的唯一值数量,并将其重命名为active_users
,表示每天的活跃用户数。
-
from activity
: 指定查询的数据来源,即从activity
表中选择数据。 -
where datediff('2019-07-27', activity_date) >= 0 AND datediff('2019-07-27', activity_date) < 30
:datediff('2019-07-27', activity_date) >= 0
: 确保只选择activity_date
在2019年7月27日或之后的记录。datediff('2019-07-27', activity_date) < 30
: 确保只选择activity_date
与2019年7月27日的天数差小于30天的记录,即从2019年7月27日开始的30天内的记录。
-
group by activity_date
:- 按
activity_date
字段分组,这样可以为每一天计算出唯一的user_id
数量,即每天的活跃用户数。
- 按
这个查询的目的是为了统计在2019年7月27日开始的30天内,每一天有多少不同的用户进行了活动。这有助于分析用户在特定时间段内的活跃度和参与度。