如果我有一个表“ table1”,并且这些列是:
EMAIL | USER_ID | START_DATE | CANCEL_DATE
如果某人注册了我们的数据库,他们只会出现一次。如果他们取消帐户,则会再次出现,并填充CANCEL_DATE-两次。如果他们随后重新订阅,它们将出现3次,并且新记录的日期为新的START_DATE。
因此,该表位于订阅级别,而不是帐户级别。
如果我想列出已取消订阅但自取消订阅以来一直未取消的人的电子邮件地址和用户ID列表,则需要(用简单的英语):
我该怎么做呢?
如果是excel,我会在“取消日期”列中针对开始日期的最大值进行一次vlookup。
希望我有道理?
我想我是用子查询得到的。是更清洁的方式吗?
SELECT EMAIL, USER_ID FROM (
SELECT EMAIL, GUID, CANCEL_DATE
FROM table1
GROUP BY EMAIL, USER_ID, CANCEL_DATE
HAVING MAX(CONTRACT_EFFECTIVE_DATE) < MAX(SUBSCRIPTION_END_DATE)
) base1
WHERE SUBSCRIPTION_END_DATE < CURRENT_DATE
START_DATE和CANCLE_DATE是互斥的,只有一个填充,另一个为NULL?
select email, user_id
from table1
group by email, user_id
having max(START_DATE) > max(CANCEL_DATE)
这仅返回取消并稍后再次订阅的活动订阅者。
编辑:
由于您似乎希望完全相反,因此只需更改条件即可:
select email, user_id
from table1
group by email, user_id
having max(START_DATE) < max(CANCEL_DATE)
这将返回所有当前已取消的订户。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句