Anhand des gezeigten Beispiels für Rownumber, wo zwar die benötigte Nummer erzeugt wird, aber auch der Rest der Daten total unterschiedlich ist, würde ich noch darauf hinweisen wollen, dass natürlich vorhandene, eindeutige Löschkriterien * m.E. vorzuziehen sind. Dies gilt besonders, wenn das nachgefragte Verfahren auf eine sehr große Datenmenge anzuwenden ist und auch erwartbar viele Datensätze gelöscht werden sollen. (Es ist relativ leicht vorstellbar, dass eine digitale Maschine bei der lässigen Aufgabe lösche alle bis auf einen in "Verlegenheit" kommen kann, besonders wenn es um
SQL, also mengenbasierte Logik geht)
Ist also der Grund für den Löschvorgang von z.B. 9 Datensätzen nicht der Punkt, dass es sich um Dubletten handelt (identische Datensätze ohne Unterschied), würde ich 10x eher die Unterschiede betrachten und nach entsprechender Prüfung explizite Merkmale als Löschkriterium nutzen.
Zu prüfen wäre ggF. auch, ob die Vielzahl von Datensätzen nicht aufgrund eines fehlerhaften oder unvollständigen Joins zustande kommt.
* eigentlich sollte es immer eindeutige Kriterien geben (spätestens der Primärschlüssel).