我有一个很大的MySQL表,我想计算累积产品。必须为每个组计算此产品,组由第一列的值定义。
例如:
name | number | cumul | order
-----------------------------
a | 1 | 1 | 1
a | 2 | 2 | 2
a | 1 | 2 | 3
a | 4 | 8 | 4
b | 1 | 1 | 1
b | 1 | 1 | 2
b | 2 | 2 | 3
b | 1 | 2 | 4
我见过this solution,但我认为在我的案例中加入或再选择会不会有效。
我见过this solution这就是我想要的,除非它没有按名称进行分区。
答案 0 :(得分:1)
这类似于累积总和:
select t.*,
(@p := if(@n = name, @p * number,
if(@n := name, number, number)
)
) as cumul
from t cross join
(select @n := '', @p := 1) params
order by name, `order`;