我们如何在 SQL 中按日期分组计算新的不同值

How Can We Count New Distinct Values group by date in SQL

我需要在一列中使用不同数量的值并按日期对其进行分组,真正的问题是如果它已经出现在以前的结果中,则不应包括计数。

例如:考虑 table tblcust

 Date        Customers
 March 1     Mike
 March 1     Yusuf
 March 1     John
 March 2     Ajay
 March 2     Mike
 March 2     Anna

结果应该是

Date       Customer_count
March 1       3
March 2       2

如果我使用

select date,count(distinct(customer)) as customer_count
group by date

我得到的结果是

Date      customer_count    
March 1   3
March 2   3

客户Mike已经拜访了两次,不能算作新客户

您可以尝试使用 SQL 服务器 ROW_NUMBER 函数实现此目的 .

create table tblCust (DtDate varchar(20), Customers Varchar(20))
insert into tblCust Values
('March 1', 'Mike'),
('March 1', 'Yusuf'),
('March 1', 'John'),
('March 2', 'Ajay'),
('March 2', 'Mike'),
('March 2', 'Anna')

 Select dtDate
     , Customers
     , ROW_NUMBER() OVER (PARTITION BY Customers ORDER BY DtDate) as SrNo
from tblCust
order by DtDate, SrNo

select Dtdate,
    count(distinct(customers)) as customer_count
from(Select dtDate
     , Customers
     , ROW_NUMBER() OVER (PARTITION BY Customers ORDER BY DtDate) as SrNo
from tblCust
)a where SrNo = 1
group by Dtdate

这是现场 db<>fiddle 演示