>我有两个表:付款,用户。
用户:
id regtime
2271 2020-01-17 16:38
付款:
user_id datetime
2271 2020-03-20 15:11
我需要从相同用户的表格payments
和注册日期(从表格users
(中获取每个用户的首次付款日期,并以天为单位计算每个用户的区别,如果可能的话,以小时为单位。
这意味着在用户进行首次付款之前,我们将获得用户在平台上的天数和小时数。
输出应类似于包含三列的表:
user_id, full_days_before_first_payment, full_hours_before_first_payment
我已经得到了查询的第一部分,该查询返回user_id
和适当的首次付款日期的列表:
SELECT user_id, DATE(MIN(datetime)) as First_payment
FROM payments
GROUP BY user_id
从现有查询开始,您只需将users
表与join
一起,然后进行计算:
select
u.id as user_id,
timestampdiff(day , u.regtime, min(p.datetime)) as full_days_before_first_payment,
timestampdiff(hour, u.regtime, min(p.datetime)) as full_hours_before_first_payment
from users u
inner join payments p on p.user_id = u.id
group by u.id, u.regtime
您需要在用户 ID 列上JOIN
两个表,并用户用户的regtime
和付款的MIN(datetime)
进行计算:
SELECT
users.id,
DATE(MIN(payments.datetime)) AS First_payment,
DATEDIFF( users.regtime, MIN(payments.datetime) ) AS full_days_before_first_payment,
TIMESTAMPDIFF( HOUR, users.regtime, MIN(payments.datetime) )
FROM
users LEFT JOIN payments ON ( users.id = payments.user_id )