据我了解,您需要使用一些“分区”或行来运行总计。似乎在 MySql 中您需要对变量进行一些“破解”,因为该数据库中没有分析函数。
以下查询将执行此操作。它使用三个变量 - @rollingsum 存储 F 列的总和,@prevP 和 @prevB 变量存储 B 和 P 列的先前值)
SELECT s.p, s.b, s.f, s.rollingSum FROM
(
SELECT p,
b,
f,
IF( p=@prevP AND b=@prevB,
@rollingsum := @rollingsum + f,
@rollingsum := f ) as rollingSum,
@prevP := p,
@prevB := b
FROM test_table p, (SELECT @rollingsum := 0, @prevP := '', @prevB := '') r
ORDER BY p,b ) s
例子:
源数据:
P B F
1 1 10
1 1 10
1 2 10
1 2 10
1 2 10
2 2 10
2 2 10
2 2 10
上述查询的结果(rollingsum 列是您的 H 列 - 您的 excel 中的总分):
P B F ROLLINGSUM
1 1 10 10
1 1 10 20
1 2 10 10
1 2 10 20
1 2 10 30
2 2 10 10
2 2 10 20
2 2 10 30