【发布时间】:2016-10-17 22:27:18
【问题描述】:
SELECT d.userID, (d.amountSuccessfulDeposits), (d.numberSuccessfulDeposits), cl.notes, d.asofdate, cl.send_date
FROM campaign_list cl
INNER JOIN deposit d
on d.userid = cl.userid
WHERE cl.send_date > date(CURDATE()) - INTERVAL 7 DAY
AND cl.send_date < date(CURDATE()) - INTERVAL 1 DAY
AND d.asofdate > date(CURDATE()) - INTERVAL 7 DAY
AND d.asofdate < date(CURDATE()) - INTERVAL 1 DAY
and cl.notes in ('report11', 'report12', 'report13', 'report14', 'report15')
and d.asofdate > cl.send_date
在用户 ID 进入活动后(报告 11-15),查询会计算存款数量。 “send_date”是将用户 ID 输入广告系列的日期。但是,如果用户 ID 进一步进入另一组活动(报告 16-20),则在进入第二组活动 (16-20) 后进行的存款不应计入第一组活动 (11-15) 查询总数。
示例:
Bob 于 1/20 进入报告 11
Bob 于 1 月 21 日存入 100 美元
Bob 于 1 月 24 日进入报告 16
Bob 于 1 月 25 日存入 500 美元
因此,上述查询应该只为 Bob 返回 100 美元。
userID; amountSuccessfulDeposits; numberSuccessfulDeposits; notes; asofdate; send_date
2575192; 100.00; 1; report11 ;2016-01-21 ; 2016-01-20
以下查询无效
SELECT d.userID, (d.amountSuccessfulDeposits), (d.numberSuccessfulDeposits), cl.notes, d.asofdate, cl.send_date
FROM campaign_list cl
INNER JOIN deposit d
on d.userid = cl.userid
WHERE cl.send_date > date(CURDATE()) - INTERVAL 7 DAY
AND cl.send_date < date(CURDATE()) - INTERVAL 1 DAY
AND d.asofdate > date(CURDATE()) - INTERVAL 7 DAY
AND d.asofdate < date(CURDATE()) - INTERVAL 1 DAY
and cl.notes in ('report11', 'report12', 'report13', 'report14', 'report15')
and d.asofdate > cl.send_date
AND (
(SELECT (ocl.send_date)
FROM campaign_list ocl
WHERE ocl.userID = cl.userID
and ocl.notes in ('report16', 'report17', 'report18', 'report19', 'report20')
) > d.asofdate
)
【问题讨论】:
-
我们可以提供一些示例表数据和所需的输出吗?在这里获得高质量答案的最快方式。
-
如何在表格中输入数字?当我从 mysql 客户端复制和粘贴时,它是一团糟
-
在每行前面添加四个空格,这将强制使用等宽文本。因此,只需在记事本中创建一个漂亮的表格,在每行的开头添加四个空格,然后将其转储到您的问题中。
-
好的。请看我的修改。