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