comments | difficulty | edit_url | tags | |
---|---|---|---|---|
true |
简单 |
|
表:emails
+-------------+----------+ | Column Name | Type | +-------------+----------+ | email_id | int | | user_id | int | | signup_date | datetime | +-------------+----------+ (email_id, user_id) 是这张表的主键(有不同值的列的组合)。 这张表的每一行包含 email ID,user ID 和注册日期。
表:texts
+---------------+----------+ | Column Name | Type | +---------------+----------+ | text_id | int | | email_id | int | | signup_action | enum | | action_date | datetime | +---------------+----------+ (text_id, email_id) 是这张表的主键(有不同值的列的组合)。 signup_action 是 ('Verified', 'Not Verified') 的枚举类型。 这张表的每一行包含 text ID,email ID,注册操作和操作日期。
编写一个解决方案来找到 第二天验证注册 的用户 ID。
返回结果表以 user_id
升序 排序。
结果格式如下所示。
示例:
输入:
emails 表:
+----------+---------+---------------------+ | email_id | user_id | signup_date | +----------+---------+---------------------+ | 125 | 7771 | 2022-06-14 09:30:00| | 433 | 1052 | 2022-07-09 08:15:00| | 234 | 7005 | 2022-08-20 10:00:00| +----------+---------+---------------------+
texts 表:
+---------+----------+--------------+---------------------+ | text_id | email_id | signup_action| action_date | +---------+----------+--------------+---------------------+ | 1 | 125 | Verified | 2022-06-15 08:30:00| | 2 | 433 | Not Verified | 2022-07-10 10:45:00| | 4 | 234 | Verified | 2022-08-21 09:30:00| +---------+----------+--------------+---------------------+
输出:
+---------+ | user_id | +---------+ | 7005 | | 7771 | +---------+
解释:
- user_id 为 7005 的用户在 2022-08-20 10:00:00 注册并且在第二天验证。
- user_id 为 7771 的用户在 2022-06-14 09:30:00 注册并且在第二天验证。
我们可以通过内连接两个表,然后根据 DATEDIFF
函数计算出注册日期和操作日期的差值是否等于 1,以及注册操作是否为 Verified
,来筛选出满足条件的用户 ID。
# Write your MySQL query statement below
SELECT user_id
FROM
Emails AS e
JOIN texts AS t
ON e.email_id = t.email_id
AND DATEDIFF(action_date, signup_date) = 1
AND signup_action = 'Verified'
ORDER BY 1;