sql / intermediate
Snippet
Korrelierte Subqueries für zeilenweise Vergleiche
Eine korrelierte Subquery wird für jede vom äußeren Query verarbeitete Zeile einmal ausgeführt. Durch die Referenzierung von Spalten der äußeren Tabelle (e1.department_id) berechnet die Subquery dynamisch einen aggregierten Schwellenwert für den Kontext der aktuellen Zeile.
snippet.sql
sql
1
2
3
4
5
6
7
SELECT e1.emp_id, e1.department_id, e1.salaryFROM employees e1WHERE e1.salary > (SELECT AVG(e2.salary)FROM employees e2WHERE e2.department_id = e1.department_id);
Erklärung
1
SELECT e1.emp_id, e1.department_id, e1.salary
Bestimmt die auszugebenden Spalten der äußeren Abfrage aus dem Primärtabellen-Alias.
2
FROM employees e1
Definiert die Haupttabelle und weist das Alias e1 für die zeilenweise Korrelation zu.
3
WHERE e1.salary > (
Filtert äußere Zeilen, deren Gehalt über dem Skalarwert der Subquery liegt.
4
SELECT AVG(e2.salary)
Berechnet das durchschnittliche Gehalt innerhalb der verschachtelten Subquery.
5
FROM employees e2
Definiert die Zieltabelle der inneren Abfrage mit dem Alias e2.
6
WHERE e2.department_id = e1.department_id
Korreliert jede innere Berechnung mit der department_id der aktuellen äußeren Zeile.
7
);
Schließt den Subquery-Ausdruck ab.