返回介绍

solution / 2400-2499 / 2474.Customers With Strictly Increasing Purchases / README

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

2474. 购买量严格增加的客户

English Version

题目描述

表: Orders

+--------------+------+
| Column Name  | Type |
+--------------+------+
| order_id   | int  |
| customer_id  | int  |
| order_date   | date |
| price    | int  |
+--------------+------+
order_id 是该表的主键。
每行包含订单的 id、订购该订单的客户 id、订单日期和价格。

 

编写一个 SQL 查询,报告 总购买量 每年严格增加的客户 id。

  • 客户在一年内的 总购买量 是该年订单价格的总和。如果某一年客户没有下任何订单,我们认为总购买量为 0
  • 对于每个客户,要考虑的第一个年是他们 第一次下单 的年份。
  • 对于每个客户,要考虑的最后一年是他们 最后一次下单 的年份。

以 任意顺序 返回结果表。

查询结果格式如下所示。

 

示例 1:

输入: 
Orders 表:
+----------+-------------+------------+-------+
| order_id | customer_id | order_date | price |
+----------+-------------+------------+-------+
| 1    | 1       | 2019-07-01 | 1100  |
| 2    | 1       | 2019-11-01 | 1200  |
| 3    | 1       | 2020-05-26 | 3000  |
| 4    | 1       | 2021-08-31 | 3100  |
| 5    | 1       | 2022-12-07 | 4700  |
| 6    | 2       | 2015-01-01 | 700   |
| 7    | 2       | 2017-11-07 | 1000  |
| 8    | 3       | 2017-01-01 | 900   |
| 9    | 3       | 2018-11-07 | 900   |
+----------+-------------+------------+-------+
输出: 
+-------------+
| customer_id |
+-------------+
| 1       |
+-------------+
解释: 
客户 1: 第一年是 2019 年,最后一年是 2022 年
  - 2019: 1100 + 1200 = 2300
  - 2020: 3000
  - 2021: 3100
  - 2022: 4700
  我们可以看到总购买量每年都在严格增加,所以我们在答案中包含了客户 1。

客户 2: 第一年是2015年,最后一年是2017年
  - 2015: 700
  - 2016: 0
  - 2017: 1000
  我们没有把客户 2 包括在答案中,因为总的购买量并没有严格地增加。请注意,客户 2 在 2016 年没有购买任何物品。

客户 3: 第一年是 2017 年,最后一年是 2018 年
  - 2017: 900
  - 2018: 900

解法

方法一

# Write your MySQL query statement below
SELECT
  customer_id
FROM
  (
    SELECT
      customer_id,
      YEAR(order_date),
      SUM(price) AS total,
      YEAR(order_date) - RANK() OVER (
        PARTITION BY customer_id
        ORDER BY SUM(price)
      ) AS rk
    FROM Orders
    GROUP BY customer_id, YEAR(order_date)
  ) AS t
GROUP BY customer_id
HAVING COUNT(DISTINCT rk) = 1;

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

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

发布评论

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