prog:oracle_analytic_functions_doubletten
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: Oracle Analytic Functions im praktischen Einsatz
prog/oracle_analytic_functions_doubletten.txt · Zuletzt geändert: 2016/06/15 11:22 von gpipperr