我有一个数据集,我试图得到总次数的客户已离开在同一天期间(基本上是退款)。
如果一个客户有一个新的业务和相同的交易时间流失,那么它被认为是退款。我试着用滞后函数来解决这个问题,但是如果从新业务转变为客户流失,我只会得到任何结果。我需要的是从新业务的变化,以及在同一天发生的搅动。
数据如下:
user_id time transaction_type
1234 2020-01-10 new_business
1234 2020-01-10 churn
5678 2020-01-10 new_business
5678. 2020-05-01 churn
1011 2020-01-10 new_business
在上面的示例中,用户标识1234将是退款,但5678将不是。用户1011仍然是客户。我想知道退款客户的总数
我的问题: select count(*) lag(time) over (partition by user_id order by time) from data where transaction_type in('churn','new_business')
然而,这个查询所发生的事情是,我得到的所有时间都有一个变化与他们两个。所以我得到了用户号1234和5678。为了将此限制为仅用户id 1234,我缺少了什么?
1条答案
按热度按时间rseugnpd1#
如果希望两种类型的人在同一日期,则可以使用聚合:
如果要计算这些值,可以使用子查询。