我需要得到第一次付款日期和用户注册日期之间的增量

ktecyv1j  于 2021-08-13  发布在  Java
关注(0)|答案(2)|浏览(306)

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

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
sqserrrh

sqserrrh1#

从现有查询开始,只需将 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
k5hmc34c

k5hmc34c2#

你需要 JOIN 用户id列上的两个表,以及用户的 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 )

相关问题