SQL-Dojo · Unterabfragen

Korrelierte Subquery: pro Zeile neu rechnen

Übungsaufgabe aus der Lernplattform: Aufgabenstellung hier lesen, Lösung dort schreiben und automatisch prüfen lassen.

Schwer , Schwierigkeit 4 von 5 ca. 15 Minuten 25 XP Track: Unterabfragen

Das ist das didaktisch anspruchsvollste Subquery-Muster. Wenn du hier den Sprung im Kopf machst, kannst du SQL-Aufgaben lösen, an denen viele in der Prüfung scheitern.

Der Sprung besteht darin, dass die innere Abfrage kein feststehendes Ergebnis mehr hat. Bisher war sie ein abgeschlossenes Päckchen: einmal ausrechnen, Wert merken, fertig. Jetzt wird sie zu einer Frage, die für jede Zeile der äußeren Abfrage neu und mit anderem Ergebnis beantwortet wird — weil sie einen Wert aus genau dieser Zeile mit hineinnimmt.

Warum das nötig ist, zeigt ein Blick auf Gehälter: Ein Firmendurchschnitt über alle Abteilungen sagt wenig aus, wenn die Entwicklung anders bezahlt wird als das Lager. Interessant wird es erst, wenn jede Person an ihrer eigenen Bezugsgruppe gemessen wird. Der Vergleichswert muss also mitwandern, und EXISTS aus der letzten Challenge hat dir bereits gezeigt, wie eine innere Abfrage auf die äußere Zeile zugreift.

Das steckt in der vollständigen Aufgabe

  1. Der Unterschied zur normalen (unkorrelierten) Subquery
  2. So denkst du den Ablauf durch
  3. Die Tabelle
  4. Deine Aufgabe

Die vollständige Aufgabenstellung mit Beispieldaten, Hinweisen und erklärter Musterlösung steht in der Lernplattform.

Lernplattform

Schreib die Lösung, wir prüfen sie.

In der Lernplattform arbeitest du direkt im Browser. Deine Lösung wird automatisch geprüft, mit Hinweisen bei Fehlern und einer erklärten Musterlösung.

Diese Aufgabe lösen

Weitere Aufgaben aus Unterabfragen

Alle Aufgaben
  1. Skalare Subquery: Vergleich mit einem Aggregat Das ist die erste Challenge im Subquery-Track. Bevor du die Aufgabe löst, solltest du verstehen, was eine Subquery überhaupt ist und wofür man sie braucht. Danach geht es um den einfachsten Fall: d... Leicht , Schwierigkeit 2 von 5 ca. 10 Minuten
  2. WHERE IN mit Subquery Aus dem Grundlagen-Track kennst du IN mit einer festen Liste: Die Liste kann aber auch aus einer anderen Tabelle kommen. Dafür ersetzt du die Liste durch eine Subquery, die eine Spalte mit Werten l... Leicht , Schwierigkeit 2 von 5 ca. 10 Minuten
  3. WHERE NOT IN: wer fehlt? Das Gegenstück zu IN: alle Werte, die nicht in der Subquery-Liste vorkommen. Typische Aufgabe: "Finde alle Kunden ohne Projekt". Die Liste "Kunden mit Projekt" liefert eine Subquery, und NOT IN dre... Mittel , Schwierigkeit 3 von 5 ca. 8 Minuten
  4. WHERE EXISTS: gibt es mindestens eine passende Zeile? EXISTS (subquery) ist ein Existenz-Test: Es liefert TRUE, wenn die Subquery mindestens eine Zeile findet, sonst FALSE. Im Gegensatz zu IN interessiert sich EXISTS nicht für konkrete Werte, sondern ... Mittel , Schwierigkeit 3 von 5 ca. 10 Minuten

Zurück zur Übersicht Unterabfragen