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

问题描述 投票:1回答:1

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

例如:考虑表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-server count distinct
1个回答
0
投票

您可以尝试使用SQL Server ROW_NUMBER Function 来实现。

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演示

© www.soinside.com 2019 - 2024. All rights reserved.