Interviewfrage für Data Analyst

Wann benutzt du WHERE und wann HAVING?

Worauf der Interviewer abzielt, wie du deine Antwort aufbaust und ein gesprochenes Beispiel zum Anpassen.

Kurzantwort

WHERE filtert einzelne Zeilen vor der Aggregation, HAVING filtert Gruppen danach. Auf rohe Spalten filterst du also im WHERE, auf Aggregatergebnisse wie COUNT oder SUM im HAVING. Filter so viel wie möglich im WHERE, denn Zeilen vor dem Gruppieren zu reduzieren ist billiger. Ein häufiger Bug ist ein Datumsfilter im HAVING: Es wird trotzdem erst alles aggregiert, und das kann die Ergebnisse verändern.

Warum Interviewer das fragen

Das zeigt, ob du die logische Ausführungsreihenfolge von SQL verstehst oder nur Syntax nachbaust. Interviewer hängen oft verwandte Fragen dran, warum du im WHERE keinen Spaltenalias referenzieren kannst oder warum ein Filter an der falschen Stelle die Zahlen verändert hat, und beides kommt aus derselben Ausführungsreihenfolge.

So baust du deine Antwort auf

  • Verankere die Antwort in der logischen Ausführungsreihenfolge.
  • Nenne die Regel: rohe Spalten ins WHERE, Aggregate ins HAVING.
  • Erklär den Performance-Grund für frühes Filtern.
  • Erwähne die Sichtbarkeit von Aliases als Folge derselben Reihenfolge.

Beispielantwort

Gesprochenes Beispiel, erste Person

Es hängt davon ab, wann die jeweilige Klausel läuft. WHERE passiert vor dem Gruppieren, filtert also einzelne Zeilen. HAVING passiert danach, filtert also die aggregierten Gruppen. Wenn ich Bestellungen aus diesem Jahr will, ist das WHERE. Wenn ich nur Kunden mit mehr als fünf Bestellungen will, muss das HAVING sein, weil der Count zum Zeitpunkt von WHERE noch gar nicht existiert. Ich schiebe Filter immer so weit wie möglich ins WHERE, denn zehntausend statt zehn Millionen Zeilen zu gruppieren macht auf einer großen Tabelle einen spürbaren Unterschied. Dieselbe Ausführungsreihenfolge erklärt etwas, worüber viele stolpern: Du kannst einen SELECT-Alias nicht im WHERE benutzen, weil die SELECT-Liste erst nach dem Filter ausgewertet wird, während die meisten Engines dir den Alias in GROUP BY und ORDER BY erlauben, was sich inkonsistent anfühlt, bis man die Reihenfolge kennt. Und der Bug, den ich tatsächlich mal fixen musste, war ein Datumsfilter im HAVING, der korrekt aussehende Summen über das falsche Zeitfenster produziert hat.

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 es

Nachfragen, mit denen du rechnen solltest

  • Warum kannst du einen SELECT-Alias nicht in der WHERE-Klausel benutzen?
  • Wie filterst du auf ein Aggregat ohne HAVING?
  • Wie sieht die logische Ausführungsreihenfolge in einem SELECT-Statement aus?

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

Üb die harten Fragen, bevor sie gestellt werden

Trainier mit einem Live-Copiloten und geh dann vorbereitet rein. Ein $29 Session Pass bringt dich durch das Vorstellungsgespräch, ohne Abo und ohne Bindung.

GhostPilot holen