Alle drei nummerieren Zeilen innerhalb eines Windows. ROW_NUMBER gibt jeder Zeile eine eindeutige laufende Nummer, Gleichstände werden also willkürlich aufgelöst. RANK gibt gleichauf liegenden Zeilen dieselbe Nummer und springt danach weiter, ergibt 1, 2, 2, 4. DENSE_RANK gibt ihnen dieselbe Nummer ohne Sprung, ergibt 1, 2, 2, 3. Nimm ROW_NUMBER zum Deduplizieren und RANK oder DENSE_RANK für echte Ranglisten.
Warum Interviewer das fragen
Das ist ein schneller, eindeutiger SQL-Check ohne Raum zum Schwafeln, und die praktische Konsequenz zählt genauso: eine Zeile pro Gruppe auszuwählen ist Alltag, und ROW_NUMBER ist dafür das richtige Werkzeug. Der Interviewer will außerdem, dass dir auffällt, dass ROW_NUMBER bei Gleichständen nicht deterministisch ist, solange dein ORDER BY keinen expliziten Tiebreaker hat.
So baust du deine Antwort auf
- Nenne das Nummerierungsverhalten jeder Funktion mit dem Beispiel 1, 2, 2, 4.
- Ordne jede Funktion der Aufgabe zu, für die sie richtig ist.
- Warne davor, dass ROW_NUMBER bei Gleichständen einen deterministischen Tiebreaker braucht.
- Zeig das Standardmuster, um die neueste Zeile pro Gruppe zu ziehen.
Beispielantwort
ROW_NUMBER gibt immer verschiedene Zahlen, zwei gleichauf liegende Zeilen bekommen also trotzdem 1 und 2, in der Reihenfolge, die die Engine gerade für richtig hält. RANK gibt beiden eine 1 und springt dann auf 3. DENSE_RANK gibt beiden eine 1 und macht bei 2 weiter. In der Praxis nutze ich ROW_NUMBER deutlich öfter als die anderen beiden, weil der häufigste Job Deduplizierung ist: partition by customer_id, order by updated_at absteigend, dann nimm die Zeilen, wo row_number gleich 1 ist, und du hast den neuesten Datensatz pro Kunde. Wenn ich eine Top-Ten-Liste baue, in der Gleichstände sich einen Platz teilen sollen, ist das DENSE_RANK. Der Haken bei ROW_NUMBER ist Determinismus. Wenn updated_at bei zwei Zeilen identisch ist, kann sich zwischen zwei Läufen ändern, welche du behältst, und ich habe genau deswegen schon ein Dashboard zwischen zwei Werten flackern sehen. Also nehme ich einen zweiten Sortierschlüssel dazu, meistens den Primary Key, damit es stabil und reproduzierbar ist.
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 ziehst du die Top drei Produkte pro Kategorie?
- Was passiert bei ROW_NUMBER, wenn zwei Zeilen identische Sortierwerte haben?
- Wie unterscheidet sich NTILE von diesen dreien?
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