capypad
0 Tage Serie
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
sql
1
2
3
4
5
6
7
SELECT e1.employee_id, e1.salary
FROM employees e1
WHERE e1.salary > (
SELECT AVG(e2.salary)
FROM employees e2
WHERE 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.