# Write your MySQL query statement below
2474. 购买量严格增加的客户
表: 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
原站题解
mysql 解法, 执行用时: 339 ms, 内存消耗: 0 B, 提交时间: 2023-10-15 23:13:51
select customer_id from ( select customer_id ,year ,year_amt ,year - rank() over(partition by customer_id order by year_amt) as diff from ( select customer_id ,year(order_date) as year ,sum(price) as year_amt from Orders group by customer_id, year(order_date) ) t1 ) t1 group by customer_id having count(distinct diff) = 1