返回介绍

solution / 2600-2699 / 2688.Find Active Users / README

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

2688. 查找活跃用户

English Version

题目描述

Users 表:

+-------------+----------+ 
| 字段名     | 类型    | 
+-------------+----------+ 
| user_id   | int    | 
| item    | varchar  |
| created_at  | datetime |
| amount    | int    |
+-------------+----------+
在这个表可能包含重复的记录。
每一行包括 user_id、购买的商品、购买日期和购买金额。

编写一个解决方案,找出活跃用户。活跃用户是指在其任何一次购买之后的 七天内 进行了第二次购买的用户。

例如,如果结束日期是 2023年5月31日,那么在 2023年5月31日 和 2023年6月7日之间(包括这两天)的任何日期都被视为"在7天内"。

返回 任意顺序user_id 列表,表示活跃用户列表。

结果的格式如下示例:

 

示例 1:

输入:
Users 表:
+---------+-------------------+------------+--------+ 
| user_id | item        | created_at | amount |  
+---------+-------------------+------------+--------+
| 5     | Smart Crock Pot   | 2021-09-18 | 698882 |
| 6     | Smart Lock    | 2021-09-14 | 11487  |
| 6     | Smart Thermostat  | 2021-09-10 | 674762 |
| 8     | Smart Light Strip | 2021-09-29 | 630773 |
| 4     | Smart Cat Feeder  | 2021-09-02 | 693545 |
| 4     | Smart Bed     | 2021-09-13 | 170249 |
+---------+-------------------+------------+--------+ 
输出:
+---------+
| user_id | 
+---------+
| 6     | 
+---------+
解释:
– user_id 为 5 的用户只有一笔交易,因此他不是活跃用户。
– user_id 为 6 的用户有两笔交易,第一笔交易是在2021年9月10日,第二笔交易是在2021年9月14日。第一笔和第二笔交易之间的时间间隔小于等于7天。因此,他是一个活跃用户。
– user_id 为 8 的用户只有一笔交易,因此他不是活跃用户。
– user_id 为 4 的用户有两笔交易,第一笔交易是在2021年9月2日,第二笔交易是在2021年9月13日。第一笔和第二笔交易之间的时间间隔大于7天。因此,他不是活跃用户。

解法

方法一

# Write your MySQL query statement
SELECT DISTINCT
  user_id
FROM Users
WHERE
  user_id IN (
    SELECT
      user_id
    FROM
      (
        SELECT
          user_id,
          created_at,
          LAG(created_at, 1) OVER (
            PARTITION BY user_id
            ORDER BY created_at
          ) AS prev_created_at
        FROM Users
      ) AS t
    WHERE DATEDIFF(created_at, prev_created_at) <= 7
  );

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

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

发布评论

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