[英]Counting duplicates with within three column tuple
我有一张表格,其格式如下所示(图表1)。 该表中有38毫米记录,代表三个月的打开次数和点击次数。 另一份报告显示,在一月份有11毫米的开口,其中7毫米是唯一的。 我想验证这张桌子有7毫米独特的开口。 如果订阅者打开电子邮件,OpenFlag的值为1,否则为0。 当每个订阅者有多条消息具有唯一的MessageID时,我只想计数1(重复)。
有人能指出我相对简单的查询(使用Count,Sum,distinct等)的方向吗? 我知道我可以使用@vars来区分一组相等的用户ID /月中具有不同messageID的第一个用户ID /月,并保持运行计数,但是在这种情况下,我想避免这种复杂性。
展览1:
create table TrackerSub
( Id int(11) NOT NULL AUTO_INCREMENT,
Time datetime NOT NULL,
SubscriberId int(11) DEFAULT NULL,
MessageId int(11) Default NULL,
OpenFlag int(1) default null,
ClickFlag int(1) default null,
Month int(2) default null,
PRIMARY KEY (`Id`)
);
如果您只是在测试是否有订阅已打开数据库中的任何电子邮件,请执行以下操作:
SELECT SUM(SubOpens) FROM (
SELECT 1 SubOpens FROM TrackerSub
WHERE OpenFlag = 1
GROUP BY SubscriberID
) opens
如果您要查看每个邮件打开了多少不重复订阅者...
SELECT MessageId, SUM(SubOpens) FROM (
SELECT MessageId, 1 SubOpens FROM TrackerSub
WHERE OpenFlag = 1
GROUP BY MessageId, SubscriberId
) opens
GROUP BY MessageId
我认为,它可以准确地表示您的架构(至少,我是如何理解的)-并会有所帮助! 祝好运!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.