Ein Inner Join liefert nur Zeilen, die auf beiden Seiten einen Treffer haben. Ein Left Join liefert jede Zeile der linken Tabelle plus die gematchten Spalten von rechts, mit NULL, wo es keinen Treffer gibt. Der stille Schaden entsteht, wenn du für eine Zählung einen Inner Join nimmst: Kunden mit null Bestellungen verschwinden komplett, deine Conversion Rate sieht besser aus als die Realität, und es kommt kein einziger Fehler.
Warum Interviewer das fragen
Joins sind das meistgenutzte Werkzeug im Alltag eines Analysten, und die falsche Wahl produziert eine plausible falsche Zahl statt einer Fehlermeldung. Der Interviewer will hören, dass du dir vor dem Schreiben der Query überlegst, welche Seite erhalten bleiben muss, und dass du Zeilenzahlen vor und nach dem Join prüfst, statt dem Ergebnis einfach zu glauben.
So baust du deine Antwort auf
- Definiere beide Joins darüber, welche Zeilen überleben.
- Gib einen konkreten Fall, in dem ein Inner Join die Fälle mit null verschwinden lässt.
- Erwähne, dass du Zeilenzahlen vor und nach dem Join prüfst.
- Weise darauf hin, dass ein Filter auf die rechte Tabelle im WHERE einen Left Join in einen Inner Join verwandelt.
Beispielantwort
Inner behält nur die Zeilen mit Treffer, Left behält alles auf der linken Seite und füllt mit NULL, wo rechts nichts steht. Der Grund, warum mich das so beschäftigt: Der falsche Join wirft keinen Fehler, er gibt dir einfach eine selbstbewusste falsche Antwort. Der Klassiker ist das Zählen von Kunden über einen Join auf Bestellungen. Mit einem Inner Join verschwindet jeder, der nie bestellt hat, und wenn du dann die durchschnittliche Bestellzahl pro Kunde rechnest, hast du stillschweigend genau den Nenner ausgeschlossen, um den es dir ging. Es gibt eine verwandte Falle, auf die ich in Reviews achte: Wenn du einen Left Join schreibst und danach im WHERE auf eine Spalte der rechten Tabelle filterst, fallen die NULL-Zeilen raus und du hast ihn unbemerkt wieder in einen Inner Join verwandelt. Der Filter gehört stattdessen in die ON-Klausel. Meine Gewohnheit ist: Zeilen der Basistabelle zählen, Join laufen lassen, wieder zählen. Ist die Zahl gewachsen, habe ich ein Fan-out. Ist sie geschrumpft, habe ich Zeilen verloren, die ich vermutlich wollte.
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
- Warum zerstört ein Filter auf die rechte Tabelle im WHERE einen Left Join?
- Wie findest du Zeilen, die in einer Tabelle existieren und in der anderen nicht?
- Wofür ist ein Full Outer Join in der Praxis gut?
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