Der Verdichtungsgrad bei einer SQL-Anfrage wird durch die group by-Klausel gesteuert. Werden mehr Atribute 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 16.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 ?Durch das Weglassen der Zeitangabe aus der group by-Klausel (und der select-Klausel) entsteht ein roll up entlang der Dimension z.Jahr: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;
Wieviel Handys wurden von welchem Hersteller verkauft ?Die ultimative Verdichtung besteht im kompletten Weglassen der group-by-Klausel. Das Ergebnis besteht aus einem Wert, nämlich 19.500: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;
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 16.5 zeigt die Ergebisse aller drei Abfragen zu Abbildung 16.4 in einem 2-dimensionalen Datenwürfel data cube.