计算共享相同FK ID的重复值

时间:2019-05-29 11:55:52

标签: sql sql-server tsql sql-server-2016

我正在尝试计算一列中共享相同FK ID的重复项的数量。每个Shared_FK_id只能有一种类型。

table:
Shared_FK_ID : bigint
type: varchar(50)

样本数据:

831 Ford
831 Fiat
831 Honda
831 Honda
831 Dodge
831 Volvo
831 Volvo
831 Opel

2 个答案:

答案 0 :(得分:2)

应该适用于大多数sql DBMS

  select Shared_FK_ID, count(*) nmbr_of_dbls
    from (
       select Shared_FK_ID, type , count(*)
       group by Shared_FK_ID, type
       having count(*) > 1
    ) t
  group by Shared_FK_ID

答案 1 :(得分:1)

要详细介绍Serg's answer,并使其特定于SQL Server,可以根据所需的确切输出执行以下任一操作。

1)包含重复项的类型数:

select Shared_FK_ID, count(*) nmbr_of_dbls
from (
   select Shared_FK_ID, [type] , count(*) nmbr
   from data
   group by Shared_FK_ID, [type]
   having count(*) > 1
) t
group by Shared_FK_ID

2)整个FK ID中重复行的总数:

select Shared_FK_ID, sum(nmbr) nmbr_of_dbls
from (
   select Shared_FK_ID, [type] , count(*) nmbr
   from data
   group by Shared_FK_ID, [type]
   having count(*) > 1
) t
group by Shared_FK_ID

实时演示:https://dbfiddle.uk/?rdbms=sqlserver_2016&fiddle=c8e1ed9607430fde16157367d59afc90