概述
目录
- 一、题目
- 二、解决
- 1、datediff + group + distinct
- 三、参考
一、题目
活动记录表: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 |
+------------+--------------+
解释:注意非活跃用户的记录不需要展示。
二、解决
1、datediff + group + distinct
思路:
2019-07-27近30天,包含2019-07-27。
# 方法1:date_add()
where activity_date between date_add('2019-07-27', interval -29 day) and '2019-07-27'
# 方法2:datediff()
where datediff('2019-07-27', activity_date) <= 29 and datediff('2019-07-27', activity_date) >= 0
# 方法3:date_sub()
where activity_date >= date_sub('2019-07-27', interval 29 day) and activity_date <= '2019-07-27'
代码:
select activity_date as day, count(distinct(user_id)) as active_users
from Activity
where datediff('2019-07-27', activity_date) <= 29 and datediff('2019-07-27', activity_date) >= 0
group by activity_date;
三、参考
1、时间限制条件:一个月到底有多少天?
2、distinct+date_add+group 解决问题
3、查询近30天活跃用户数
最后
以上就是兴奋鸡翅为你收集整理的【LeetCode-SQL】1141. 查询近30天活跃用户数一、题目二、解决三、参考的全部内容,希望文章能够帮你解决【LeetCode-SQL】1141. 查询近30天活跃用户数一、题目二、解决三、参考所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复