sql / intermediate
Snippet
Zeilenfiltern mit skalar korrelierten Unterabfragen
Eine skalar korrelierte Unterabfrage wird einmal für jede vom äußeren Query verarbeitete Zeile ausgeführt. Sie berechnet dynamisch das Durchschnittsgehalt der jeweiligen Abteilung des Mitarbeiters für den Kontextvergleich.
snippet.sql
sql
1
2
3
4
5
6
7
SELECT e1.employee_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.employee_id, e1.department_id, e1.salary
Gibt die zurückzugebenden Spalten aus der Haupttabelle mit dem Alias e1 an.
2
FROM employees e1
Definiert die Quelltabelle des äußeren Queries und weist den Tabellenalias e1 zu.
3
WHERE e1.salary > (
Filtert Zeilen, in denen das Mitarbeitergehalt höher ist als der berechnete Abteilungsdurchschnitt.
4
SELECT AVG(e2.salary)
Berechnet das Durchschnittsgehalt für den Vergleich in der inneren Unterabfrage.
5
WHERE e2.department_id = e1.department_id
Verknüpft den inneren Tabellenalias e2 mit der department_id der äußeren Zeile aus e1.