SQL: Zwischensummen und Gesamtsumme ausgeben

Aus DBWiki
Wechseln zu: Navigation, Suche

Zurück zur Übersicht



Je nach SQL-Dialekt kann die Lösung über eine Vereinigungsabfrage oder über das zusätzliche Schlüsselwort ROLLUP in der GROUP BY-Klausel erfolgen.


Es sollen z.B. die Summe aller Gehälter je Job ausgegeben werden. Zusätzlich soll im letzten Datensatz die Gesamtsumme aller Gehälter erscheinen.

Lösung für Jet-SQL

Hinweis für Access-Anwender
Um die folgenden Abfragen selbst testen zu können, müssen die Tabellen der Übungsdatenbank vorhanden sein.

SELECT job,
       Sum( m.gehalt ) AS gehalt
FROM   mitarbeiter AS m
GROUP  BY job
UNION  ALL
SELECT 'Alle Jobs',
       Sum( gehalt )
FROM   mitarbeiter

Lösung für PostgreSQL

SELECT COALESCE( job, 'Alle Jobs' ) AS job,
       SUM( gehalt ) AS gehalt
FROM   mitarbeiter
GROUP  BY ROLLUP ( job )
ORDER  BY job = 'Alle Jobs', job

Die Lösung kann in diesem DBFiddle eingesehen werden.

job gehalt
Abteilungsleiter 8275
Handelsvertreter 5600
Hauptgeschäftsführer 5000
Referent 6000
Sachbearbeiter 4150
Alle Jobs 29025



Zurück zur Übersicht