Как подсчитать количество дубликатов в sql

#sql #oracle

#sql #Oracle

Вопрос:

У меня есть таблицы, подобные следующим, я хотел бы подсчитать дубликаты и назначить их.

 customer date       type
A       2020/8/1     a
A       2020/8/1     b
B       2019/5/1     a
B       2019/6/1     c
  

Я хотел бы count дублировать в customer и date в, присвоить количество duplicate из них.

["customer,"date"]

 customer date     type     duplicate
A       2020/8/1   a       2
A       2020/8/1   b       2
B       2019/5/1   a       1
B       2019/6/1   c       1

  

Если у кого-то есть мнение назначить количество дублирующихся строк.
Пожалуйста, дайте мне знать. Спасибо

Ответ №1:

С count() over аналитической функцией. Date является зарезервированным словом

 SELECT c.*,
       COUNT(*) OVER (PARTITION BY "customer","date") duplicate 
FROM   tablename c;
  

Если вы хотели отформатировать столбец даты

 SELECT "customer",
        to_char("date",'DD-MON-YYYY HH:MI:SS AM') "date",
        "type",
       COUNT(*) OVER (PARTITION BY "customer","date") duplicate 
FROM tablename ;
  

Ответ №2:

Вы можете попробовать следующее —

 select a.customer,a.date,type,duplicate 
from tablename a
join 
(select customer,date, count(*) as duplicate from tablename group by customer, date) b 
on a.customer=b.customer and a.date=b.date