在 SQL 中查找重复计数

Finding duplicate count in SQL

我知道如何通过执行以下操作 return 进行复制:

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

我想知道是否有办法 return 直接计算 table 中的重复项而不是相关值?

例如,如果上面的查询 returned:

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

有没有我可以写的查询,只是 return 这个数字?

所以

count(*)
   2

count(*)
   5

类似的东西。实际上,唯一性可能是 1 到 N 列的组合,上面的例子只显示了 2 列。

您将使用子查询:

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;