【发布时间】:2019-08-22 19:46:47
【问题描述】:
发送日期、打开总数、上次打开日期(如果有打开)、总点击次数、上次点击日期(如果有打开)
create table TBLA(Email text, SendID text, SendDate date, OpenDate date, ClickDate date);
insert into TBLA values("aaa@gmail.com", "ABCD1234", "8/1/2019",'1/8/2019',"8/1/2019");
insert into TBLA values("aaa@gmail.com", "ABCD1234", "8/1/2019",'2/8/2019',"");
insert into TBLA values("aaa@gmail.com", "ABCD1234", "8/1/2019",'3/8/2019',"8/3/2019");
insert into TBLA values("bbb@gmail.com", "ABCD1234", "8/1/2019",'1/8/2019',"");
insert into TBLA values("bbb@gmail.com", "ABCD1234", "8/1/2019",'2019/8/15',"8/15/2019");
insert into TBLA values("ccc@gmail.com", "ABCD1234", "8/1/2019","","");
insert into TBLA values("ddd@gmail.com", "ABCD1234", "8/1/2019","","");
insert into TBLA values("aaa@gmail.com", "xyz123", "8/2/2019","8/2/2019","8/2/2019");
insert into TBLA values("aaa@gmail.com", "xyz123", "8/2/2019","8/15/2019","");
insert into TBLA values("bbb@gmail.com", "xyz123", "8/2/2019","","");
insert into TBLA values("ccc@gmail.com", "xyz123", "8/2/2019","8/5/2019","8/5/2019");
select SendID," ", SendDate," ",count(OpenDate), " ", max(OpenDate), " ", count(ClickDate), " ", max(ClickDate)
from TBLA
where SendID = "ABCD1234" AND (OpenDate<>"" AND ClickDate<>"");
count(OpenDate) 必须为 5,max(OpenDate) 必须为 8/15/2019。 Count(ClickDate) 必须为 3。
【问题讨论】:
-
您在
SELECT中有一个包含未聚合列的聚合查询。没有GROUP BY。该查询在语法上看起来无效。 -
我添加了 GROUP BY 并且没有任何变化。我减少了我的查询: Select count(OpenDate), max(OpenDate) from TBLA where SendID="ABCD1234" AND OpenDate "" group by SendID;结果对 Count 有利,但最大日期为“2019 年 8 月 3 日”。为什么不是“8/15/2019”?
-
@JulieLevesque 您的日期是字符串格式,这就是“2019 年 8 月 3 日”大于“2019 年 8 月 15 日”的原因。您需要使用转换函数将字符串格式的日期转换为日期时间格式的日期。
-
我很惊讶你的代码甚至可以运行。查询有很多问题。