Aggregieren innerhalb des Skriptes erfolgt innerhalb des Skriptes mit der GROUP BY Anweisung.
Beispieltabelle:
VID | KID | VUIS | Umsatz | Kosten | Menge | .. |
1 | 1 | 2 | 10 | 5 | 1 | .. |
1 | 1 | 2 | 20 | 5 | 2 | .. |
2 | 1 | 1 | 20 | 5 | 2 | .. |
3 | 1 | 1 | 40 | 10 | 1 | .. |
3 | 1 | 2 | 10 | 10 | 1 | .. |
4 | 1 | 1 | 20 | 5 | 2 | .. |
4 | 1 | 1 | 30 | 20 | 1 | .. |
Problem:
In diesem Beispiel verfügt ein Vorgang über mehrere Umsätze somit ist der Gesamtumsatz pro Vorgang die Summe der Gesamtumsätze der einzelnen Untervorgänge usw.
Des weiteren können wir in diesem Beispiel den Gesamtumsatz pro Kunde über die KID berechnen.
Lösung:
Vorgänge:
Load
*
, Gesamtumsatz - Gesamtkosten As Gesamtgewinn
;
SQL Select
VID
//, ...
, Umsatz
, Kosten
, Menge
, Umsatz * Menge As Gesamtumsatz
, Kosten * Menge As Gesamtkosten
From Vorgänge;
GesamtProVorgang:
Load
VID
, sum(Gesamtumsatz) As GesamtUmsatzVorgang
, sum(Gesamtkosten) As GesamtKostenVorgang
, sum(Gesamtgewinn) As GesamtgewinnVorgang
Resident Vorgänge
Group by VID;
GesamtProKunde:
// left join(Kunden) // optional möglich
Load
KID
, sum(Gesamtumsatz) As GesamtUmsatzVorgang
, sum(Gesamtkosten) As GesamtKostenVorgang
, sum(Gesamtgewinn) As GesamtgewinnVorgang
Resident Vorgänge
Group by KID;