【发布时间】:2020-10-10 00:09:20
【问题描述】:
在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)?
【问题讨论】:
标签: mysql sql select sum window-functions