Definiere zuerst, was doppelt überhaupt heißt, denn exakte Kopien und fachliche Dubletten sind zwei verschiedene Probleme. Zum Finden: GROUP BY auf den gemeinten Schlüssel und mit HAVING COUNT(*) größer eins filtern. Zum Entfernen: ROW_NUMBER partitioniert über diesen Schlüssel mit einem deterministischen ORDER BY, dann alles mit Nummer größer eins löschen oder ausschließen und die neueste oder vollständigste Zeile behalten.
Warum Interviewer das fragen
Dubletten sind eine wöchentliche Aufgabe und eine häufige Quelle aufgeblähter Metriken. Der Interviewer will sehen, dass du die Definition von doppelt klärst, bevor du SQL schreibst, dass du eine Window Function statt eines fragilen Self Joins nimmst und dass du bewusst entscheidest, welche Kopie bleibt, statt es dem Zufall zu überlassen.
So baust du deine Antwort auf
- Frag, was hier als Dublette zählt, bevor du SQL anfasst.
- Finde sie mit GROUP BY plus HAVING COUNT größer eins.
- Dedupliziere mit ROW_NUMBER über eine Partition und stabile Sortierung.
- Nenne die Regel, welche Zeile überlebt und warum.
- Geh der Ursache upstream nach, statt nur aufzuräumen.
Beispielantwort
Ich würde zuerst fragen, was doppelt hier bedeutet, denn eine komplett identische Zeile heißt meistens, dass ein Ladevorgang zweimal gelaufen ist, während zwei Zeilen für denselben Kunden mit unterschiedlichen E-Mail-Adressen ein Erfassungsproblem sind, das eine fachliche Entscheidung braucht. Zum Finden gruppiere ich auf den gemeinten Schlüssel und nutze HAVING COUNT größer eins, was mir gleichzeitig sagt, wie groß das Problem ist. Zum Entfernen nehme ich ROW_NUMBER partitioniert über diesen Schlüssel, sortiert nach updated_at absteigend mit dem Primary Key als Tiebreaker, damit es reproduzierbar ist, und behalte Nummer eins. Wenn ich nicht löschen darf, wandert dieselbe Logik in einen View. Was ich versuche nicht zu überspringen, ist die Frage, woher sie kommen. Jeden Montagmorgen Dubletten aufzuräumen ist ein Symptom. Als ich das zuletzt zurückverfolgt habe, hat ein wiederholter Ingestion-Job angehängt statt gemerged, und das zu fixen hat eine Stunde gedauert und den wöchentlichen Aufräumjob dauerhaft beendet.
Steht dieses Vorstellungsgespräch bald an? GhostPilot hört bei deinem Live-Call mit, erkennt die Frage in dem Moment, in dem sie gestellt wird, und bringt dir eine strukturierte Antwort in Echtzeit auf den Bildschirm. Probier es im nächsten Mock aus, oder hol dir einen $29 Session Pass, kein Abo, für den Ernstfall.
So funktioniert esNachfragen, mit denen du rechnen solltest
- Wie entscheidest du, welche der doppelten Zeilen du behältst?
- Wie deduplizierst du, wenn der Schlüssel unscharf ist, etwa Name und Adresse?
- Was würdest du upstream prüfen, damit Dubletten nicht wiederkommen?
Weitere Fragen für Data Analyst
Dein Interviewer stellt seine eigene Version davon. Kopier deine echte Stellenbeschreibung in den kostenlosen Question Predictor und bekomm die 20 Fragen, die diese Rolle am wahrscheinlichsten stellt, samt dem, worauf jede wirklich abzielt.
Meine Fragen vorhersagen