首页 > 解决方案 > 运行计数不同

问题描述

我试图根据唯一的电子邮件地址和创建日期来查看订阅者的累积数量如何随时间变化。下面是我正在使用的表的示例。

在此处输入图像描述

我试图把它变成下表。电子邮件 1@gmail.com 被创建了两次,我想算一次。我无法弄清楚如何生成Running count distinct列。

在此处输入图像描述

谢谢您的帮助。

标签: sqlsnowflake-cloud-data-platform

解决方案


我通常会这样做row_number()

select date, count(*),
       sum(count(*)) over (order by date),
       sum(sum(case when seqnum = 1 then 1 else 0 end)) over (order by date)
from (select t.*,
             row_number() over (partition by email order by date) as seqnum
      from t
     ) t
group by date
order by date;

这类似于使用lag(). 但是,如果同一封电子邮件在同一日期出现多次,我会因为延迟而感到紧张。


推荐阅读