Meine erste Tabelle sieht wie folgt ausTeradata. Wie summiere ich alle Werte innerhalb einer Gruppe?
id value
1 20
1 50
1 30
2 60
2 5
2 35
muss ich die folgende resultierende Tabelle
id value cum | (this is explanation not a field)
_ _ _ _ _ _ _ _ __ _ _ _ _ _ _ _ __ _ _ _ _ _ _ _ __ _ _ _ _ _ _ _ _
1 20 20 | (0 + 20 = 20)
1 30 50 | (30 + 20 = 50)
1 50 100 | (50 + 50 = 100)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ _ _ _ _ _ _ _ __ _ _ _ _ _ _ _ _
2 5 5 | (0 + 5 = 5)
2 35 40 | (5 + 35 = 40)
2 60 100 | (40 + 60 = 100)
Die Logik ist
1) ORDER
die ursprüngliche Tabelle BY value ASC
2) SUM
up alle vorherigen Werte ergeben eine kumulative cum
Feld. So ist die cum
Spalte die SUM
von allen value
weniger als die aktuelle value
.
Ich brauche diese
ohne gespeicherte Prozedur nur mit SQL zu tun, wie kann ich dies tun?
'SEL "id", "Wert", SUM ("value") OVER (PARTITION BY "id" ORDER BY "value") \t VON MyTab \t GROUP BY 1,2' Das alles' gibt 100' – john
Mache ich es richtig? – john
Sorry, habe den 'unlimited previous' Teil vergessen, den Fehler behoben. – dnoeth