#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