sql / expert
Snippet
Lateral Derived Tables für zeilenweise Berechnungen
Das Schlüsselwort LATERAL (Teil von ANSI SQL) ermöglicht es einer Unterabfrage in der FROM-Klausel, auf Spalten vorangehender Tabellen in derselben FROM-Klausel zu verweisen. Dies ist äußerst nützlich für 'Top-N pro Gruppe'-Abfragen oder komplexe Berechnungen pro Zeile, die Kontext aus der äußeren Tabelle benötigen.
snippet.sql
1
2
3
4
5
6
7
8
9
SELECT u.name, top_order.amountFROM users uCROSS JOIN LATERAL (SELECT amountFROM orders oWHERE o.user_id = u.idORDER BY o.amount DESCFETCH FIRST 1 ROW ONLY) AS top_order;
Erklärung
1
CROSS JOIN LATERAL (
Initiiert einen lateralen Join, wodurch die Unterabfrage 'u.id' sehen kann.
2
WHERE o.user_id = u.id
Referenziert die Spalte der äußeren Tabelle innerhalb des Unterabfrage-Scopes.
3
FETCH FIRST 1 ROW ONLY
Begrenzt den Ergebnissatz für jeden spezifischen Benutzer auf dessen höchste Bestellung.