Eine Window Function rechnet über eine Menge von Zeilen, die zur aktuellen Zeile gehören, kollabiert sie aber nicht. Du behältst also jede Zeile und bekommst eine berechnete Spalte dazu. GROUP BY klappt Zeilen zu einer pro Gruppe zusammen. Damit kannst du jede Bestellung neben dem Gesamtumsatz des Kunden im selben Ergebnis zeigen, wofür du mit GROUP BY eine Subquery und einen Join zurück bräuchtest.
Warum Interviewer das fragen
Window Functions sind die Trennlinie zwischen einfachem und mittlerem SQL, und der Großteil echter Analystenarbeit (laufende Summen, Rankings, Periodenvergleiche, Deduplizierung) hängt daran. Der Interviewer will den Punkt mit dem Nicht-Kollabieren hören, ein sauberes Verständnis von PARTITION BY versus ORDER BY und idealerweise das Bewusstsein, dass die Defaults des Window Frame das Ergebnis verändern.
So baust du deine Antwort auf
- Führ mit dem Kernunterschied: Zeilen bleiben erhalten, sie werden nicht kollabiert.
- Erklär PARTITION BY als die Gruppierung und ORDER BY als die Reihenfolge.
- Nenne zwei oder drei echte Anwendungen, die du selbst geschrieben hast.
- Erwähne die Frame-Klausel und den Default, sobald ORDER BY dabei ist.
Beispielantwort
Der Kernunterschied ist, dass GROUP BY kollabiert und eine Window Function nicht. Mit einem Window behalte ich jede Zeile und hänge eine Spalte an, die über eine definierte Menge von Nachbarn gerechnet wird, also kann ich jede Transaktion neben der laufenden Summe dieses Kunden zeigen, ohne Self Join. PARTITION BY sagt, welche Zeilen zum selben Window gehören, also partition by customer_id, und ORDER BY definiert die Reihenfolge darin, und genau das lässt laufende Summen und Lag-Vergleiche funktionieren. Ich benutze sie ständig: row_number, um den letzten Datensatz pro Entität zu ziehen, lag für die Veränderung Monat über Monat, sum über eine sortierte Partition für kumulierten Umsatz. Was man wissen sollte, ist das Frame. Sobald du ORDER BY dazunimmst, geht der Default vom Anfang der Partition bis zur aktuellen Zeile, was für eine laufende Summe genau richtig ist, für eine Summe über die ganze Partition aber nicht. Wenn ich die Gruppensumme auf jeder Zeile will, lasse ich ORDER BY weg oder setze das Frame explizit.
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
- Was ist das Default-Frame und wann überrascht es die Leute?
- Wie rechnest du einen gleitenden Sieben-Tage-Durchschnitt in SQL?
- Kannst du direkt auf das Ergebnis einer Window Function filtern?
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