大型MySQL表上的累积产品

时间:2017-05-16 14:21:18

标签: mysql

我有一个很大的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这就是我想要的,除非它没有按名称进行分区。

1 个答案:

答案 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`;