返回介绍

solution / 2200-2299 / 2228.Users With Two Purchases Within Seven Days / README

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

2228. 7 天内两次购买的用户

English Version

题目描述

表: Purchases

+---------------+------+
| Column Name   | Type |
+---------------+------+
| purchase_id   | int  |
| user_id     | int  |
| purchase_date | date |
+---------------+------+
purchase_id 包含唯一值。
该表包含用户从某个零售商购买的日期的日志。

 

编写解决方案,获取 最多 间隔 7 天进行两次购买的用户的 id。

返回_按 user_id 排序的结果表。_

结果格式如下所示。

 

示例 1:

输入: 
Purchases 表:
+-------------+---------+---------------+
| purchase_id | user_id | purchase_date |
+-------------+---------+---------------+
| 4       | 2     | 2022-03-13  |
| 1       | 5     | 2022-02-11  |
| 3       | 7     | 2022-06-19  |
| 6       | 2     | 2022-03-20  |
| 5       | 7     | 2022-06-19  |
| 2       | 2     | 2022-06-08  |
+-------------+---------+---------------+
输出: 
+---------+
| user_id |
+---------+
| 2     |
| 7     |
+---------+
解释: 
用户 2 在 2022-03-13 和 2022-03-20 有两次购买。由于第二次购买是在第一次购买后的 7 天内,我们添加了他们的 ID。
用户 5 只购买了 1 次。
用户 7 在同一天有两次购买,所以我们添加了他们的 ID。

解法

方法一

# Write your MySQL query statement below
WITH
  t AS (
    SELECT
      user_id,
      DATEDIFF(
        purchase_date,
        LAG(purchase_date, 1) OVER (
          PARTITION BY user_id
          ORDER BY purchase_date
        )
      ) AS d
    FROM Purchases
  )
SELECT DISTINCT user_id
FROM t
WHERE d <= 7
ORDER BY user_id;

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

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

发布评论

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