Поиск дубликатов в SQL - PullRequest
       24

Поиск дубликатов в SQL

0 голосов
/ 22 марта 2019

Я знаю, как вернуть дубликаты, выполнив следующие действия:

select cust_name, cust_id, count(*)
from customers
group by cust_name, cust_id
having count(*) > 1;

Что я хочу знать, если есть способ вернуть прямое количество дубликатов в таблице, а не связанные значения?

Например, если приведенный выше запрос вернул:

cust_name   cust_id count(*)
Fred        22789      2
Jim         45678      3

Можно ли написать запрос, который бы просто возвращал число?

Итак

count(*)
   2

Или

count(*)
   5

Что-то в этом роде.В действительности уникальность может быть комбинацией от 1 до N столбцов, приведенный выше пример показывает только 2 столбца.

1 Ответ

2 голосов
/ 22 марта 2019

Вы бы использовали подзапрос:

select count(*) as num_with_duplicates,
       sum(cnt) as total_duplicate_count
from (select cust_name, cust_id, count(*) as cnt
      from customers
      group by cust_name, cust_id
      having count(*) > 1
     ) cc;
...