Sql 我有一个呼叫数据表,我想计算每天呼叫的唯一帐户的数量,并计算每月呼叫的唯一帐户的总和

Sql 我有一个呼叫数据表,我想计算每天呼叫的唯一帐户的数量,并计算每月呼叫的唯一帐户的总和,sql,sql-server,Sql,Sql Server,我有一个表,有两个唯一的列,一个是帐号,另一个是日期。下面给出了示例数据 Date account 9/8/2020 555 9/8/2020 666 9/8/2020 777 9/8/2020 888 9/9/2020 555 9/9/2020 999 9/10/2020 555 9/10/2020 222 9/10/2020 333 9/11/2020 666 9/11/2020 111 我想计算每天调用的唯一帐户的数量,并将其

我有一个表,有两个唯一的列,一个是帐号,另一个是日期。下面给出了示例数据

Date    account
9/8/2020    555
9/8/2020    666
9/8/2020    777
9/8/2020    888
9/9/2020    555
9/9/2020    999
9/10/2020   555
9/10/2020   222
9/10/2020   333
9/11/2020   666
9/11/2020   111
我想计算每天调用的唯一帐户的数量,并将其汇总一个月。例如,如果在9月8日、9月9日和9月20日调用了555帐户,则其总和不等于累计总和,结果如下所示

date    Cumulative Unique Accounts Called SO Far this month
9/8/2020    4
9/9/2020    5
9/10/2020   7
9/11/2020   8

提前感谢您的帮助。

您可以使用聚合和窗口功能来完成此操作。首先,获取每个帐户的第一个日期,然后汇总和累积:

select min_date,
       count(*) as as_of_date,
       sum(count(*)) over (partition by year(min_datedate), month(min_datedate)
                           order by min_date
                          ) as cumulative_unique_count
from (select account, min(date) as min_date
      from t
      group by account, year(date), month(date)
     ) t
group by min_date;

你可以试试下面的方法-

with cte as
(
select date,count(*) as total from
(
select date,count,row_number() over(partition by count order by date) as rn
from tablename
)A where rn=1 group by date
)

select date,sum(total) over(order by date) as cum_sum
from cte

每天,甚至周末?