我需要获取用户首次付款日期和用户注册日期之间的增量



>我有两个表:付款,用户。

用户:

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 )

最新更新