








Reden wir über Vorstellungsgespräche (Teil 2) 😎
Im letzten Beitrag haben wir Soft Skills, die STAR-Methode und Excel angesprochen. Das ist die Grundausstattung. Jetzt gehen wir weiter, SQL.
Wenn Sie Excel gut beherrschen, verstehen Sie bereits die Grundlagen: wie Daten verknüpft werden, welche Probleme bei Verknüpfungen auftreten, wie Gruppierungen funktionieren. Der Einstieg in SQL besteht im Wesentlichen aus 5 Befehlen: SELECT, FROM, WHERE, JOIN, GROUP BY. Fensterfunktionen und temporäre Tabellen sind nützlich, aber am Anfang nicht kritisch.
Und jetzt zum Wesentlichen. Das Hauptproblem liegt nicht in der Syntax. Das Problem liegt in Blöcken, die die Abfrage nicht zum Absturz bringen. Der Code wird ausgeführt, der Interpreter schweigt, aber das Ergebnis ist nicht das, was der Interviewer erwartet. Genau daran scheitern viele.
1️⃣NOT IN + NULL: Stille statt Daten
In SQL: NULL ≠ leer ≠ 0. Wer Python gelernt hat, weiß: Null ist Null, NULL ist Leere, Nichts. Behalten Sie das im Kopf.
Aufgabe: Finden Sie Benutzer, die nicht auf der schwarzen Liste stehen.
❌
SELECT * FROM users
WHERE id NOT IN (SELECT user_id FROM blocked)Scheint alles richtig zu sein. Aber wenn in blocked auch nur eine Zeile mit user_id = NULL steht, ist das Ergebnis: 0 Zeilen. SQL kann nicht mit NULL vergleichen und gibt stillschweigend eine leere Menge zurück.
✅
SELECT * FROM users u
WHERE NOT EXISTS (
SELECT 1 FROM blocked b
WHERE b.user_id = u.id
)Übrigens, NOT EXISTS ist auch schneller: Es nimmt die ID, geht in die zweite Tabelle, findet das erste Vorkommen, stoppt. NOT IN durchsucht die Tabelle von oben bis unten vollständig. Bei großen Tabellen ist der Unterschied spürbar.
2️⃣ LEFT JOIN, der stillschweigend zu INNER JOIN wurde
Die JOIN-Typen werden wir in den folgenden Beiträgen der Serie ausführlich besprechen. Hier nur das Wesentliche der Falle.
❌
SELECT c.name, o.amount
FROM customers c
LEFT JOIN orders o ON c.id = o.customer_id
WHERE o.status = 'completed'Was passiert: WHERE tötet die NULL-Zeilen aus der rechten Tabelle. Kunden ohne Bestellungen verschwinden einfach. LEFT JOIN wird zu INNER JOIN. Und das Ergebnis ist daneben.
✅
SELECT c.name, o.amount
FROM customers c
LEFT JOIN orders o
ON c.id = o.customer_id
AND o.status = 'completed'Eine Zeile mit AND. Der Unterschied ist grundlegend.
3️⃣AVG lügt schön
Hier eine kleine Aufgabe. 10 Zeilen mit Verkaufsdaten. Bei dreien NULL. Was gibt AVG zurück? Den Durchschnitt von 7, nicht von 10. Wenn die Werte plausibel aussehen, ist der Trick schwer zu erkennen. Die Zahl ist realistisch, aber verzerrt.
❌
SELECT AVG(salary) FROM employees✅
SELECT AVG(COALESCE(salary, 0)) FROM employeesCOALESCE: Trifft auf NULL, ersetzt durch 0. Man kann auch darauf verzichten, aber dann erklären Sie dem Interviewer, dass Sie das Verhalten von AVG verstehen und es bewusst akzeptieren. Beide Varianten werden anerkannt 👌
4️⃣Ausführungsreihenfolge: der größte Trick
Wir schreiben: SELECT → FROM → WHERE → GROUP BY.
Ausgeführt wird: FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY.
Unlogisch? Allerdings 🤷♀️
❌
SELECT category, AVG(sales) AS avg_sales
FROM orders
WHERE avg_sales > 1000
GROUP BY categoryDer Alias avg_sales existiert in der WHERE-Klausel noch nicht. Das System kennt dieses Feld einfach nicht.
✅
SELECT category, AVG(sales) AS avg_sales
FROM orders
GROUP BY category
HAVING AVG(sales) > 1000HAVING ist die Filterung nach der Gruppierung. Mehr dazu in einem separaten Beitrag der Serie.
5️⃣Syntax vergessen? Keine Panik
Kommt vor: Nervosität, lange nicht mit dem Thema beschäftigt. Nun, das passiert jedem. Sagen Sie direkt: „Ich verstehe die Logik, kann die Schritte beschreiben. Die genaue Syntax würde ich googeln.“ Jeder vernünftige Fachmann wird das zu schätzen wissen. Die Logik zu verstehen ist eine Sache. Eine Funktion zu googeln = 30 Sekunden.
Bonus zum Schluss: Die erste Frage bei einem Test = „Welches DBMS verwenden Sie?“.
DATE_TRUNC — PostgreSQL. DATE_FORMAT — MySQL. Die richtige Abfrage für die falsche Datenbank = Fehler auf ganzer Linie.
Im nächsten Beitrag SQL: Retention und Kohorten. Und morgen gibt es einen Beitrag und einen Artikel über den Fall meines Teams mit der Firma Grand-Alpha. Sie beschäftigen sich mit Tierfutter.
Frage an Sie. Ist es Ihnen schon einmal passiert, dass Sie die Antwort vergessen haben und sich ums Verrecken nicht erinnern konnten? Wie haben Sie in dieser Situation gehandelt? 👇
#sql
@data_dzen
Comentarios
0Aún no hay comentarios.
Inicia sesión para participar en la conversación.