一个非常新手的mysql问题。我有一个如下所示的 mysql 表,其中输出列是我要生成的
测试表
Record_ID Day price_change Output
=======================================
1 1 null null
2 1 3 3
3 1 -1 null
4 1 0 -1
5 1 1 1
6 1 -1 null
7 1 0 null
8 1 0 -1
9 1 1 1
10 2 null null
11 2 1 null
我要做的是在记录的 price_change 列中获取运行总计,并在每次值的符号更改、日期更改或下一个值为空时输出该总计。
record_id 可能并不总是连续的,因此它可能是 10、15、16、19、20 等。
我试图做类似下面的事情(我不处理一天的变化),但它的行为不像我预期的那样,我无法在输出后重置变量。谁能指出我应该如何处理这个问题的正确方向?
set @var := 0;
SELECT
rid,
pcng,
CASE
when pcng > 0 and next_price_change > 0 then @var := @var + pcng /* output null */
when pcng < 0 and next_price_change < 0 then @var := @var + pcng /* output null */
when pcng * next_price_change < 0 or next_price_change is null then @var + pcng
/* how to reset the @var ??? */
END AS output_sum
FROM (
SELECT
Record_ID as rid,
Price_CHANGE as pcng,
/* Subselect next number from next Record_ID which may not be in sequence */
(SELECT Price_change FROM test_table WHERE Record_ID > rid ORDER BY Record_ID ASC LIMIT 1) AS next_price_change
FROM test_table
) pcalc