繁体   English   中英

用三列元组计算重复项

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM