написать запрос для выявления несоответствия - PullRequest
0 голосов
/ 05 октября 2011

У меня есть таблица с идентификаторами учеников и именами учеников. Были проблемы с назначением студентам уникальных идентификаторов учеников, и поэтому я хочу найти дубликаты

Вот пример таблицы:

Student ID  Student Name
   1                 Jack
   1                 John
   1                 Bill
   2                 Amanda
   2                 Molly
   3                 Ron
   4                 Matt
   5                 James
   6                 Kathy
   6                 Will

Здесь я хочу, чтобы в третьем столбце «Duplicate_Count» отображалось количество дублированных записей. Например, «Duplicate_Count» будет отображать «3» для идентификатора ученика = 1 и так далее. Как я могу это сделать?

Заранее спасибо

Ответы [ 3 ]

2 голосов
/ 05 октября 2011
  Select StudentId, Count(*) DupCount
  From Table
  Group By StudentId
  Having Count(*) > 1
  Order By Count(*) desc, 
1 голос
/ 05 октября 2011

Это должно работать:

update mytable
set duplicate_count = (select count(*) from mytable t where t.id = mytable.id)

ОБНОВЛЕНИЕ:

Как уже упоминалось @HansUp, добавление нового столбца с повторяющимся счетчиком, вероятно, не имеет смысла, но это действительно зависит отдля чего ОП изначально думал использовать его.Я оставляю ответ на тот случай, если он поможет кому-то другому.

1 голос
/ 05 октября 2011
Select
  aa.StudentId, aa.StudentName, bb.DupCount
from
  Table as aa
join
(
  Select StudentId, Count(*) as DupCount from Table group by StudentId
) as bb
on aa.StudentId = bb.StudentId

Виртуальная таблица дает счетчик для каждого StudentId, он присоединяется к исходной таблице, чтобы добавить счетчик к каждой записи студента.

Если вы хотите добавить столбец в таблицу дляHold dupcount, этот запрос можно использовать в операторе update для обновления этого столбца в таблице

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...