返回介绍

solution / 1100-1199 / 1107.New Users Daily Count / README

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

1107. 每日新用户统计

English Version

题目描述

Traffic 表:

+---------------+---------+
| Column Name   | Type  |
+---------------+---------+
| user_id     | int   |
| activity    | enum  |
| activity_date | date  |
+---------------+---------+
该表可能有重复的行。
activity 列是 ENUM 类型,可能取 ('login', 'logout', 'jobs', 'groups', 'homepage') 几个值之一。

 

编写解决方案,找出从今天起最多 90 天内,每个日期该日期首次登录的用户数。假设今天是 2019-06-30

任意顺序 返回结果表。

结果格式如下所示。

 

 

示例 1:

输入:
Traffic 表:
+---------+----------+---------------+
| user_id | activity | activity_date |
+---------+----------+---------------+
| 1     | login  | 2019-05-01  |
| 1     | homepage | 2019-05-01  |
| 1     | logout   | 2019-05-01  |
| 2     | login  | 2019-06-21  |
| 2     | logout   | 2019-06-21  |
| 3     | login  | 2019-01-01  |
| 3     | jobs   | 2019-01-01  |
| 3     | logout   | 2019-01-01  |
| 4     | login  | 2019-06-21  |
| 4     | groups   | 2019-06-21  |
| 4     | logout   | 2019-06-21  |
| 5     | login  | 2019-03-01  |
| 5     | logout   | 2019-03-01  |
| 5     | login  | 2019-06-21  |
| 5     | logout   | 2019-06-21  |
+---------+----------+---------------+
输出:
+------------+-------------+
| login_date | user_count  |
+------------+-------------+
| 2019-05-01 | 1       |
| 2019-06-21 | 2       |
+------------+-------------+
解释:
请注意,我们只关心用户数非零的日期.
ID 为 5 的用户第一次登陆于 2019-03-01,因此他不算在 2019-06-21 的的统计内。

解法

方法一

# Write your MySQL query statement below
WITH
  T AS (
    SELECT
      user_id,
      MIN(activity_date) OVER (PARTITION BY user_id) AS login_date
    FROM Traffic
    WHERE activity = 'login'
  )
SELECT login_date, COUNT(DISTINCT user_id) AS user_count
FROM T
WHERE DATEDIFF('2019-06-30', login_date) <= 90
GROUP BY 1;

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

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

发布评论

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