我们如何在 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 演示
我需要在一列中使用不同数量的值并按日期对其进行分组,真正的问题是如果它已经出现在以前的结果中,则不应包括计数。
例如:考虑 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 演示