Как мы можем подсчитать группу новых отличительных значений по дате в SQL - PullRequest
1 голос
/ 21 марта 2020

Мне нужно различное количество значений в столбце и сгруппировать его по дате. Реальная проблема заключается в том, что счетчик не следует включать, если он уже имел место в предыдущем результате.

Например: рассмотрим таблицу 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

Клиент, Майк дважды посещался, его не следует считать новым клиентом.

1 Ответ

0 голосов
/ 21 марта 2020

Вы можете попытаться добиться этого, используя 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

Вот живое дБ <> скрипка демо

...