返回介绍

solution / 1100-1199 / 1141.User Activity for the Past 30 Days I / README

发布于 2024-06-17 01:03:23 字数 2475 浏览 0 评论 0 收藏 0

1141. 查询近 30 天活跃用户数

English Version

题目描述

表:Activity

+---------------+---------+
| 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 天的每日活跃用户数(当天只要有一条活动记录,即为活跃用户)。

任意顺序 返回结果表。

结果示例如下。

 

示例 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      |
+------------+--------------+ 
解释:注意非活跃用户的记录不需要展示。

解法

方法一:GROUP BY + HAVING

我们查询出所有在 2019-07-27 且在 $30$ 天内的所有活动记录,然后按照日期分组,统计每天的去重活跃用户数。

# Write your MySQL query statement below
SELECT activity_date AS day, COUNT(DISTINCT user_id) AS active_users
FROM Activity
WHERE activity_date <= '2019-07-27' AND DATEDIFF('2019-07-27', activity_date) < 30
GROUP BY 1;

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文