Подсчет повторяющихся значений с одинаковым идентификатором FK - PullRequest
0 голосов
/ 29 мая 2019

Я пытаюсь подсчитать, сколько дубликатов в одном столбце имеют одинаковый идентификатор FK. На 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 ]

2 голосов
/ 29 мая 2019

Должно работать для большинства СУБД sql

  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 голос
/ 29 мая 2019

Чтобы уточнить ответ Серга , а также сделать его специфичным для SQL-сервера, вы можете выполнить одно из следующих действий в зависимости от того, какой именно вывод вам необходим.

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:

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

...