仅计算重复记录的行数

Counting only number of rows a record being repeated

这就是我面临的问题- 我有一个 table "A" 如下

  Name     AmountPaid    Type
  NAME1        5          1
  NAME1        10         1
  NAME1        3          1
  NAME2        5          2
  NAME2        9          2
  NAME2        8          2

这里我们有两个名称 - Name1 和 Name2,类型为 1 和 2

我正在尝试获取一个查询,该查询应该 return 只有数字,该数字应该显示 table 中存在的唯一名称集合的次数。 在上面,我期望结果为 - 2 我试过查询

Select NAME, count(Name) from A group by Name

但是这将 return 低于 2 条记录。

  NAME1    3
  NAME2    3

非常感谢任何帮助。

您可以使用 DISTINCT 来执行此操作:

SELECT COUNT (DISTINCT NAME)
FROM A

请尝试以下查询:

Select count(distinct(NAME)) from A

如果我没记错的话,这就是您所需要的。考虑到您不想 count name 如果它不重复

SELECT Count(DISTINCT NAME)
FROM   (SELECT *,
               Row_number()OVER(partition BY NAME ORDER BY type) rn
        FROM   Yourtable) a
WHERE  rn > 1 

使用这个:

--TEST TABLE
Declare @sometable as table (Name Varchar(10))
insert into @sometable
values  ('Name1'),
        ('Name1'),
        ('Name1'),
        ('Name2'),
        ('Name2'),
        ('Name2'),
        ('Name3'),
        ('Name4')
--VARIANT 1
SELECT COUNT(*)
FROM   (
            SELECT NAME,
                   COUNT(*) AS Cnt
            FROM   @sometable
            GROUP BY NAME
        ) AS T
WHERE  Cnt > 1
--VARIANT 2
SELECT COUNT(*)
FROM   ( SELECT NAME
         FROM   @sometable
         GROUP BY NAME
         HAVING COUNT(*) > 1 ) AS T
--VARIANT 3
SELECT COUNT(*)
FROM   (SELECT DISTINCT NAME, COUNT(*) OVER (PARTITION BY NAME) AS Cnt
        FROM   @sometable
        ) AS T
WHERE  Cnt > 1