SQL Server 2012: CUME_DIST() – kumulierte Verteilung eines Wertes

Neben den Erweiterung der OVER-Klausel wurden auch einige statistische Erweiterung implementiert. Wollen Sie zum Beispiel wissen, wie häufig ein Werte rel. zum Rest eines Bereiches vorkommt, so kann dies CUME_DIST im Handumdrehen lösen. Das kann nützlich sein, wenn Sie in einer Tabelle Abteilunge und Umsätze sehen. Wollen Sie nun wissen, welcher Umsatz pro Abteilung der höchste war und wie hoch die anderen Umsätze rel. zur aktuellen Position in der Abteilung sind, dann wäre das ein Fall für den CUST_DIME().

 

CREATE TABLE Tab1 (id int identity,Col1 char(2), COL2 int) 
GO
INSERT INTO Tab1 VALUES('IT',5), ('IT',3),  ('IT',2), ('HR',10),('HR',8),('HR',3),('HR',1),('MA',5),('MA',4),('MA',4)
GO

SELECT Col1, COL2,
       CUME_DIST() OVER(PARTITION by COL1 ORDER BY COL2) AS "CUME_DIST()"   FROM Tab1

 

und hier das Ergebnis:

Die Spalten CUME_DIST() zeigt wieviel Prozent der Abteilungen (HR, IT etc) gleich oder kleiner sind als der aktuelle Wert in Spalte COL2.

Beispielsweise ist in HR in COL2 der höchste Wert. Daher ist CUME_DIST = 1, da alle anderen Werte (100%=1) eben kleiner oder gleich sind in HR. Betrachtet man die 8 in HR, so sind drei viertel der Werte (8,3,1) kleiner oder gleich als die 8 (3/4 = 0,75)

image

SQL 2008 Administration Training

Author: Fumus

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert