====== Aggregationsfunktionen ====== ===== distributiv ===== Es gibt eine Funktion G, so dass $$F(\{X_{i,j}\}) = G(\{F(\{X_{i,j} | i=1, \dots, I\}) | j=1, \dots, J\})$$ Beispiel: - min() - max() - count() Angewandt für count: $${COUNT}(\{X_{i,j}\}) = SUM(\{COUNT(\{X_{i,j} | i=1, \dots, I\}) | j=1, \dots, J\})$$ $X_{0,0} = 1; X_{1,0} = 2; X_{2,0} = 3;$ $X_{0,1} = 4; X_{1,1} = 5; X_{2,1} = 6;$ ===== algebraisch ===== Es gibt eine Funktion G, die M-Tupel liefert und H, so dass $$F(\{X_{i,j}\}) = H(\{G(\{X_{i,j} | i=1, \dots, I\}) | j=1, \dots, J\})$$ M ist apriori bekannt, ebenso der Typ der Tupel. Bsp.: -Durchschnitt -Truncated Average -Standardabweichung -Top-N Bsp.: Durchschnitt: G: (Summe, Count) H: (Gesamtsumme, Gesamtcount) Bsp.: Truncated Average: G: (Summe, Count, Min, Max) Bsp.: Standardabweichung: Unkorrigierte Standardabweichung: G: (Summe, Summe der Quadrate, Count) ===== holistisch ===== Es kann keine Beschränkung des Speicherbedarfs für Sub-Aggregate d.h. für Aggregate über $$\{X_{i,j} | i=1, \dots, I\}$$ angegeben werden / Größe des Zwischenergebnisses ist nicht beschränkt. Beispiele - Median() - HäufigsterWert() - TruncatedAverage() (dynamisch) ===== Self-maintainable ===== Wenn nach Änderung der neue Wert der Aggregationsfunktion aus dem alten Wert und den Änderungen berechnet werden kann. Algebraische und holistische Aggregationsfunktionen sind nicht self-maintainable. Bsp.: - Count() self-maint. bzgl. Einfügen, Löschen - Min() self-maint. bzgl. Einfügen - Avg() ist nicht self-maint.