Anhang B. Gemeinsame Tabellenausdrücke

Viele der in diesem Kochbuch vorgestellten Abfragen gehen über das hinaus, was mit Tabellen, wie sie typischerweise in einer Datenbank vorhanden sind, möglich ist, insbesondere in Bezug auf Aggregat- und Fensterfunktionen. Deshalb musst du für einige Abfragen eine abgeleitete Tabelle erstellen - entweder eine Unterabfrage oder einen gemeinsamen Tabellenausdruck (CTE).

Unterabfragen

Die wohl einfachste Art, eine virtuelle Tabelle zu erstellen, mit der du Abfragen auf Fensterfunktionen oder Aggregatfunktionen ausführen kannst, ist eine Subquery. Dazu musst du nur die Abfrage, die du brauchst, in Klammern setzen und dann eine zweite Abfrage schreiben, die sie verwendet. Die folgende Tabelle veranschaulicht die Verwendung von Unterabfragen mit einem einfachen Doppelaggregat - duwillst nicht nur die Anzahl der Mitarbeiter in jedem Auftrag ermitteln, sondern auch die höchste Zahl, aber du kannst Aggregatfunktionen nicht direkt in eine Standardabfrage einfügen.

Ein Fallstrick ist, dass du bei einigen Anbietern die Subquery-Tabelle und den Alias angeben musst, bei anderen nicht. Das folgende Beispiel wurde in MySQL geschrieben, wo ein Alias erforderlich ist. Der Alias ist hier HEAD_COUNT_TAB nach der schließenden Klammer.

Andere, die einen Alias benötigen, sind PostgreSQL und SQL Server, während Oracle dies nicht tut:

select max(HeadCount) as HighestJobHeadCount from
(select job,count(empno) as HeadCount
from emp
group by job) head_count_tab

Get SQL Kochbuch, 2. Auflage now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.