SQL-查询近30天活跃用户数

该SQL查询从Activity表中提取过去30天(包括2019-07-27)的每日活跃用户数。活跃用户定义为在给定日期有至少一条活动记录的用户。查询结果展示了每天的活跃用户数量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

活动记录表:Activity

+---------------+---------+

| Column Name | Type |

+---------------+---------+

| user_id | int |

| session_id | int |

| activity_date | date |

| activity_type | enum |

+---------------+---------+

该表是用户在社交网站的活动记录。

该表没有主键,可能包含重复数据。

activity_type 字段为以下四种值 ('open_session', 'end_session', 'scroll_down', 'send_message')。

每个 session_id 只属于一个用户。

请写SQL查询出截至 2019-07-27(包含2019-07-27),近 30 天的每日活跃用户数(当天只要有一条活动记录,即为活跃用户)。

任意顺序 返回结果表。

查询结果示例如下。

示例 1:

输入:

Activity table:

+---------+------------+---------------+---------------+

| user_id | session_id | activity_date | activity_type |

+---------+------------+---------------+---------------+

| 1 | 1 | 2019-07-20 | open_session |

| 1 | 1 | 2019-07-20 | scroll_down |

| 1 | 1 | 2019-07-20 | end_session |

| 2 | 4 | 2019-07-20 | open_session |

| 2 | 4 | 2019-07-21 | send_message |

| 2 | 4 | 2019-07-21 | end_session |

| 3 | 2 | 2019-07-21 | open_session |

| 3 | 2 | 2019-07-21 | send_message |

| 3 | 2 | 2019-07-21 | end_session |

| 4 | 3 | 2019-06-25 | open_session |

| 4 | 3 | 2019-06-25 | end_session |

+---------+------------+---------------+---------------+

输出:

+------------+--------------+

| day | active_users |

+------------+--------------+

| 2019-07-20 | 2 |

| 2019-07-21 | 2 |

+------------+--------------+

解释:注意非活跃用户的记录不需要展示。

参考答案

select activity_date day, count(distinct user_id) active_users from Activity where 0<=datediff('2019-07-27',activity_date) and datediff('2019-07-27',activity_date)<30 group by activity_date
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值