===== Oracle Analytic Function - Beispiel 3 - Doppelte Daten / Dubletten finden und löschen ===== Aufgabe: In einer Tabelle befinden sich doppelte Daten, die doppelten Datensätze sollen gefunden und gelöscht werden. Lösung: pro gleichen Datensatz wird eine fortlaufende Nummer mit der ROW_NUMBER() Funktion vergeben: -- testdaten aus Beispiel 1 -- select id , rowid , ROW_NUMBER( ) over( partition by id order by id ) rang from t / ID ROWID RANG ----- ------------------ ------------ 857 AAAj6YAAEAAALSkADH 1 857 AAAj6YAAEAAALULADE 2 858 AAAj6YAAEAAALSkADI 1 858 AAAj6YAAEAAALULADF 2 -- gleiche Daten unterscheiden sich nun um die Rang Number -- löschen -- delete from t where rowid in( select rowid from ( select rowid , ROW_NUMBER() over( partition by id order by id) rang from t ) where rang > 1 ) / 56033 Zeilen wurden gelöscht. Mehr Beispiele: [[prog:oracle_analytic_functions|Oracle Analytic Functions im praktischen Einsatz]]