我有一个交易表,可以在我们的电子邮件营销消息中使用跟踪像素来注册电子邮件。我正在尝试构建一个查询,该查询将为我提供事务表中的记录,其中最后记录的电子邮件读取时间超过6周。原因是,这些交易没有“参与”我们的电子邮件营销,我需要更新其中一个订阅者字段以反映(因此他们可以收到不同类型的电子邮件)。
如果我用英文写出来,声明应该是这样的:
从6周以前订户ID出现的交易中选择行,但过去6周内不存在。
那么,最初的想法是创建我在过去6周内打开过电子邮件的记录集,然后将其与表格的其余部分进行比较?我可以在一个声明中这样做,还是应该将它分成两个?
提前感谢任何可以提供帮助的人。
答案 0 :(得分:3)
SELECT SubscriberId
FROM TransactionTable
GROUP BY SubscriberId
HAVING MAX(ReadDate) < DATE_SUB(NOW(), INTERVAL 6 WEEK)
答案 1 :(得分:0)
不需要花哨的数学。您的要求归结为一个简单的<
条款:任何在过去6周内没有记录交易的用户:
SELECT userID
FROM transactionstable
WHERE MAX(timestampfield) < DATE_SUB(now(), INTERVAL 6 WEEK)
GROUP BY userID
答案 2 :(得分:0)
定义一个显示过去6周活动的字段。我的意思是整数0或1.然后:
SELECT * FROM transtable WHERE activityfield = 0 AND datefield < DATE_SUB(now(), INTERVAL 6 WEEK)
答案 3 :(得分:0)
如果您使用的数据库支持Oracle SQL,请尝试以下操作:
SELECT * from transactions
WHERE subscribed_date < SYSDATE-(6*7);