Подсчет повторяющихся значений с одинаковым идентификатором FK

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

Пожалуйста, объясните, что ты подразумевает под дубликатом. Также отметьте базу данных, которую вы используете.

Gordon Linoff 29.05.2019 13:56

Под дубликатами я подразумеваю значения, которые совпадают в столбце type.

AllramEst 29.05.2019 13:58

Каков ожидаемый результат в вашем образце данных?

forpas 29.05.2019 14:02

Выглядит немного очевидным, но SELECT count(1), type group by type

Carlos Alves Jorge 29.05.2019 14:02

«Для каждого Shared_FK_id должен быть только один тип». Вы действительно имеете в виду «Должен быть только один экземпляр каждого типа на Shared_FK_id»?

ADyson 29.05.2019 14:06

Твое право. Да, я сделал

AllramEst 29.05.2019 14:10

И вам нужно общее количество дублированных строк во всем идентификаторе FK или количество типов, содержащих дубликаты? или количество дубликатов внутри каждого типа? Думаю, вам подойдет один из этих запросов, в зависимости от желаемого результата: dbfiddle.uk/…

ADyson 29.05.2019 14:11

P.S. Если вы действительно имели в виду то, что я предложил, то, пожалуйста, отредактируйте свой вопрос соответствующим образом, чтобы он был понятен для всех.

ADyson 29.05.2019 14:13

Одно из ваших предложений по ссылке сработало. сделать предложение решения, и я приму ответ.

AllramEst 29.05.2019 14:17

Я могу сделать ... если вы сначала скажете мне, какое решение вы хотели :-)

ADyson 29.05.2019 14:21

Два последних примера

AllramEst 29.05.2019 15:06
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
1
11
99
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Должен работать для большинства СУБД 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
Ответ принят как подходящий

Чтобы уточнить Ответ Серга, а также сделать его специфичным для 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) общее количество дублирующихся строк во всем ФК 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

Другие вопросы по теме