sql / expert
Snippet
Abhängige abgeleitete Tabellen mit LATERAL
Ein LATERAL-Join ermöglicht es einer Unterabfrage in der FROM-Klausel, auf Spalten von vorhergehenden Tabellen in der Join-Reihenfolge zu verweisen. Dies erzeugt effektiv eine 'foreach'-Schleifenlogik in SQL und ermöglicht komplexe Berechnungen pro Zeile, wie das Finden der drei bestverdienenden Mitarbeiter für jede einzelne Abteilung in einer einzigen Abfrage.
snippet.sql
1
2
3
4
5
6
7
8
9
SELECT d.department_name, top_earners.nameFROM departments dCROSS JOIN LATERAL (SELECT e.nameFROM employees eWHERE e.department_id = d.idORDER BY e.salary DESCFETCH FIRST 3 ROWS ONLY) AS top_earners;
Erklärung
1
FROM departments d
Die Haupttabelle, die den Kontext für jede laterale Iteration liefert.
2
CROSS JOIN LATERAL (
Ermöglicht der Unterabfrage den Zugriff auf Spalten des zuvor definierten Alias 'd'.
3
WHERE e.department_id = d.id
Die Korrelationsbedingung, die Mitarbeiter basierend auf der aktuellen Abteilung filtert.
4
FETCH FIRST 3 ROWS ONLY
Begrenzt das Ergebnis der Unterabfrage auf die besten 3 Datensätze für jede Abteilungsiteration.