Моя первоначальная таблица выглядит следующим образомTeradata. Как суммировать все значения внутри группы?
id value
1 20
1 50
1 30
2 60
2 5
2 35
мне нужно следующее результирующая таблица
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)
Логика
1) ORDER
исходная таблица BY value ASC
2) SUM
вверх все предыдущие значения приводят к накоплению cum
поле. Таким образом, столбец cum
- это SUM
всего value
меньше, чем текущий value
.
Мне нужно сделать это с помощью SQL только без хранимой процедуры
Как я могу это сделать?
'SEL "Идентификатор", "значение", СУММА ("значение") НАД (PARTITION BY "ID" ORDER BY "значение") \t ОТ myTab \t GROUP BY 1,2' Это дает все' 100' – john
Я делаю это правильно? – john
Извините, забыл раздел 'rows unbounded previous', исправил его. – dnoeth