sql / expert
Snippet
Korrelierte Unterabfragen für vergleichende Analysen
Eine korrelierte Unterabfrage bezieht sich auf Spalten der äußeren Abfrage. Dieses Beispiel identifiziert Mitarbeiter, die mehr als das Durchschnittsgehalt in ihrer jeweiligen Abteilung verdienen, was erfordert, dass die Unterabfrage für jede von der äußeren Anweisung ausgewertete Zeile ausgeführt wird.
snippet.sql
1
2
3
4
5
6
7
SELECT e1.employee_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.salary
Wählt die ID und das Gehalt aus dem Alias der primären Mitarbeitertabelle aus.
2
WHERE e1.salary > (SELECT AVG(e2.salary)...)
Filtert Zeilen, in denen das Gehalt das Ergebnis der inneren Aggregatfunktion übersteigt.
3
WHERE e2.department_id = e1.department_id
Der Korrelationsschritt: Verknüpft die Abteilung der Unterabfrage mit der aktuellen Zeile der äußeren Abfrage.