SQL doppelte Einträge (innerhalb einer Gruppe)

SQL zu finden, doppelte Einträge (innerhalb einer Gruppe)

Ich habe ein kleines problem und ich bin mir nicht sicher, was wäre der beste Weg, es zu beheben, da ich nur beschränkten Zugriff auf die Datenbank (Oracle) selbst.
In unserer Tabelle "EVENT" haben wir über 160k Einträge, jedes EREIGNIS hat eine GROUPID und ein normaler Eintrag ist genau 5 Zeilen mit der gleichen Gruppen-id. Aufgrund eines Fehlers haben wir derzeit ein paar doppelte Einträge (Duplikate, also 10 Zeilen statt 5, nur ein anderes EVENTID. Das kann sich ändern, so ist es nur <> 5). Wir müssen die filter alle Einträge dieser Gruppen.

Aufgrund der begrenzten Zugriff auf die Datenbank, die wir nicht verwenden können, eine temporäre Tabelle, noch können wir hinzufügen, einen index auf die Spalte GROUPID um es schneller zu machen.

Können wir die GROUPIDs, die mit dieser Abfrage, aber wir brauchen eine zweite Abfrage, um die benötigten Daten

select A."GROUPID"
from "EVENT" A
group by A."GROUPID"
having count(A."GROUPID") <> 5

Eine Lösung wäre eine Unterauswahl:

select *
from "EVENT" A
where A."GROUPID" IN (
  select B."GROUPID"
  from "EVENT" B
  group by B."GROUPID"
  having count(B."GROUPID") <> 5
)

Ohne einen index auf GROUPID und 160k Einträge, das dauert viel zu lange.
Versucht darüber nachzudenken, einen join, der kann damit umgehen, aber nicht finden können, eine gute Lösung so weit.

Jeder kann das finden einer guten Lösung für diese vielleicht?

Kleinen edit:
Wir haben nicht 100% Duplikate, da jeder Eintrag hat noch eine eindeutige ID und die Gruppen-id ist nicht eindeutig, entweder (das ist, warum wir müssen, verwenden Sie "group by") - oder vielleicht nur ich vermisse eine einfache Lösung für ihn 🙂

Kleines Beispiel über die Daten (die ich nicht wollen, um es zu löschen, finde es einfach)


EVENTID | GROUPID | TYPEID
123456    123       12
123457    123       145

123458    123       2612
123459    123       41
123460    123       238

234567    123       12
234568    123       145
234569    123       2612
234570    123       41
234571    123       238


Es hat einige weitere Spalten, wie Zeitstempel, etc, aber wie Ihr schon seht, alles ist identisch, außer der EVENTID.

Wir es mehr Häufig zum testen, finden Sie die Fehler und prüfen Sie, ob es wieder passiert.

Können Sie uns ein Beispiel geben von der Gruppe der Duplikate und markieren Sie die Zeilen sollten entfernt werden?

InformationsquelleAutor FrankS | 2008-10-08

Schreibe einen Kommentar