sql - 运行计数不同
问题描述
我试图根据唯一的电子邮件地址和创建日期来查看订阅者的累积数量如何随时间变化。下面是我正在使用的表的示例。
我试图把它变成下表。电子邮件 1@gmail.com 被创建了两次,我想算一次。我无法弄清楚如何生成Running count distinct列。
谢谢您的帮助。
解决方案
我通常会这样做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()
. 但是,如果同一封电子邮件在同一日期出现多次,我会因为延迟而感到紧张。
推荐阅读
- python - Pandas - 将 CSV 转换为 JSON - 使用 groupby 组织,然后删除索引键
- php - laravel 中的更新在用户表中不起作用
- listview - 仅提交所选项目的值
- python - 在 python 中重复排列(不要使用 set() 或 uniform() 方法)
- sql - 确定不显示输出的班级容量的程序
- python - 如何设置功能
- python - 如何让 pygame 沿着 2 点之间的线上的所有点绘制?
- java - 如何让我的程序循环浏览 wav 文件列表?
- ios - 如何将 UIImage 发送到 Firestore?
- node.js - 在端口 80 上设置时,pm2 多次重启