В mysql, если вы используете sum(some_col) over()
, он вернет глобальную сумму для каждой строки. Но когда вы используете sum(some_col) over(order by some_col)
, он даст другую совокупную сумму в двух случаях: имеет ли some_col
повторяющееся значение.
create table if not exists tsum (
num1 int,
num2 int
);
truncate table tsum;
insert into tsum values (2,1), (2,2), (1,3), (1,4), (3,5);
# select * from tsum;
select *, sum(num1) over (order by num1) as c1
from tsum;
select *, sum(num2) over (order by num2) as c2
from tsum;
результат
num1, num2, c1
1,3,2
1,4,2
2,1,6
2,2,6
3,5,9
num1, num2, c2
2,1,1
2,2,3
1,3,6
1,4,10
3,5,15
Почему использование order by
даст кумулятивную сумму? Почему совокупная сумма будет отличаться при наличии повторяющихся значений из заказанного some_col
(например, я ожидаю, что c1
будет 1, 2, 4, 6, 9
)?