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
每天,甚至周末?