prev up next

Roll-Up/Drill-Down-Anfragen

Der Verdichtungsgrad bei einer SQL-Anfrage wird durch die group by-Klausel gesteuert. Werden mehr Attribute in die group by-Klausel aufgenommen, spricht man von einem drill down. Werden weniger Attribute in die group by-Klausel aufgenommen, spricht man von einem roll up.

Wieviel Handys wurden von welchem Hersteller in welchem Jahr verkauft ? select Hersteller, Jahr, sum(Anzahl)
from   Verkäufe v, Produkte p, Zeit z
where  v.Produkt = p.ProduktNr
and    v.VerkDatum = z.Datum
and    p.Produkttyp = 'Handy'
group  by p.Hersteller, z.Jahr;


Analyse der Handy-Verkäufe nach unterschiedlichen Dimensionen

Das Ergebnis wird in der linken Tabelle von Abbildung 17.4 gezeigt. In der Tabelle rechts oben bzw. rechts unten finden sich zwei Verdichtungen.

Durch das Weglassen der Herstellerangabe aus der group by-Klausel (und der select-Klausel) entsteht ein roll up entlang der Dimension p.Hersteller:

Wieviel Handys wurden in welchem Jahr verkauft ? select Jahr, sum(Anzahl)
from   Verkäufe v, Produkte p, Zeit z
where  v.Produkt = p.ProduktNr
and    v.VerkDatum = z.Datum
and    p.Produkttyp = 'Handy'
group  by z.Jahr;
Durch das Weglassen der Zeitangabe aus der group by-Klausel (und der select-Klausel) entsteht ein roll up entlang der Dimension z.Jahr:
Wieviel Handys wurden von welchem Hersteller verkauft ? select Hersteller, sum(Anzahl)
from   Verkäufe v, Produkte p
where  v.Produkt = p.ProduktNr and v.VerkDatum = z.Datum
and    p.Produkttyp = 'Handy'
group  by p.Hersteller;
Die ultimative Verdichtung besteht im kompletten Weglassen der group-by-Klausel. Das Ergebnis besteht aus einem Wert, nämlich 19.500:
Wieviel Handys wurden verkauft ? select sum(Anzahl)
from   Verkäufe v, Produkte p
where  v.Produkt = p.ProduktNr
and    p.Produkttyp = 'Handy';


Handy-Verkäufe nach Jahr und Hersteller

Durch eine sogenannte cross tabulation können die Ergebnisse in einem n-dimensionalen Spreadsheet zusammengefaßt werden. Abbildung 17.5 zeigt die Ergebisse aller drei Abfragen zu Abbildung 17.4 in einem 2-dimensionalen Datenwürfel data cube.


prev up next