MYSQL:如何使用趋势跟踪价值变化,如果价值下降则趋势为-1,如果增加则为1和0相同
例如
id_indicator value Trend
1 0 0
1 1 1
1 5 1
1 4 -1
2 1 0
2 -8 -1
2 0 1
我如何获得趋势栏? 我可以在Select语句中添加临时列来保存趋势值吗?
答案 0 :(得分:0)
使用myslq变量来跟踪前一行
SET @prev = 0;
SELECT
id_indicator,
value,
-- IF(value > @prev, 1, IF(value < @prev , -1, 0)) AS trend,
SIGN(value-@prev) AS trend, -- nicer solution thx to @spencer7593
@prev:=value FROM `the_table`
第四列的唯一目的是将当前值分配到@prev
,以便您可以在下一行迭代中使用它。
拥有当前值和以前的值,你几乎可以用它们写任何你想要的表达式