SQL: Prozentualer Anteil an einer Summe bestimmen

Aus DBWiki
Wechseln zu: Navigation, Suche

Zurück zur Übersicht



Diese Aufgabe lässt sich recht einfach lösen, indem man den Quotienten aus der Teilsumme und der Gesamtsumme bildet, und das Ergebnis mit 100 multipliziert.


Im folgenden soll der Anteil der Gehälter der Abteilung 10 an den Gesamtgehältern bestimmt werden.

Traditionelle Lösung

Hinweis für Access-Anwender
Um die folgende Abfrage selbst testen zu können, müssen die Tabellen der Übungsdatenbank vorhanden sein. Null-Werte werden nicht betrachtet.

SELECT Sum( IIf( abt_nr = 10, gehalt ) ) / Sum( gehalt ) * 100 AS proz_anteil
FROM   mitarbeiterTINCT

Lösung mittels Window Funktion

SELECT DISTINCT ( abt_total / total::REAL * 100 )::NUMERIC( 5, 2 ) AS proz_anteil
FROM   ( SELECT abt_nr,
	        SUM( gehalt ) OVER ( PARTITION BY abt_nr ) AS abt_total,
	        SUM( gehalt ) OVER () AS total
	 FROM   mitarbeiter) AS t
WHERE  abt_nr = 10

Für PostgreSQL kann das Ergebnis in diesem DBFiddle eingesehen werden.

Als Ergebnis sollten wir überall 30,15 (gerundet auf zwei Nachkommastellen) erhalten.



Zurück zur Übersicht