2230. 查找可享受优惠的用户 🔒
题目描述
Table: Purchases
+-------------+----------+ | Column Name | Type | +-------------+----------+ | user_id | int | | time_stamp | datetime | | amount | int | +-------------+----------+ (user_id, time_stamp)是此表的主键(不同值的列的组合)。 每一行都包含有关购买时间和用户 ID user_id 以及购买的数量的信息。
如果用户在包含时间间隔 [startDate,endDate]
内购买了至少 minAmount
数量的商品,则有资格享受折扣。要将日期转换为时间,两个日期都应视为一天的 开始(例如,endDate = 2022-03-05
应该被认为是 2022-03-05 00:00:00
)。
编写一个解决方案来查询符合折扣条件的用户的 ID。
返回结果表,以 user_id
排序。
查询结果格式如下例所示。
示例 1:
输入: Purchases 表: +---------+---------------------+--------+ | user_id | time_stamp | amount | +---------+---------------------+--------+ | 1 | 2022-04-20 09:03:00 | 4416 | | 2 | 2022-03-19 19:24:02 | 678 | | 3 | 2022-03-18 12:03:09 | 4523 | | 3 | 2022-03-30 09:43:42 | 626 | +---------+---------------------+--------+ startDate = 2022-03-08, endDate = 2022-03-20, minAmount = 1000 输出: +---------+ | user_id | +---------+ | 3 | +---------+ 解释: 在三个用户中,只有用户 3 有资格享受折扣。 - 用户 1 有一次至少购买了 minAmount 的数量,但不在时间间隔内。 - 用户 2 在时间间隔内有一次购买,但少于 minAmount 数量。 - 用户 3 是唯一满足这两个条件的用户。
重要提示:这个问题基本上与 有资格享受折扣的用户数量 相同。
解法
方法一
1 2 3 4 5 6 7 8 |
|