MySQL:如何利用其趋势跟踪价值变化?

时间:2017-01-06 16:12:04

标签: mysql

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语句中添加临时列来保存趋势值吗?

1 个答案:

答案 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,以便您可以在下一行迭代中使用它。
拥有当前值和以前的值,你几乎可以用它们写任何你想要的表达式

相关问题