如何将当前价格划分为sql中同一列中的最后价格

时间:2017-12-06 02:32:19

标签: mysql sql

如何划分((89-95)/ 95)* 100或((95-100)/ 100)* 100

 CREATE TABLE `priceindex` (
          `priceIndexId` int(11) NOT NULL,
          `Date` date DEFAULT NULL,
          `Price` decimal(31,9) DEFAULT NULL
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8;


priceIndexId |    Date    | Price | Currentvalue/previous value
      1      | 2017-11-30 |  100  | 
      2      | 2017-12-06 |  95   | answer should be(95-100)/100)*100 = -0.50
      3      | 2017-12-13 |  89   | answer should be(89-95)/95)*100 = -0.63

提前致谢

1 个答案:

答案 0 :(得分:1)

您需要获取之前的值。一种方法使用相关子查询。我建议使用子查询进行计算:

select pi.priceIndexId, pi.Date, pi.Price,
       (pi.Price - pi.prev_price) / pi.prev_price as change
from (select pi.*,
             (select pi2.price
              from priceindex pi2
              where pi2.date < pi.date
              order by pi2.date desc
              limit 1
             ) as prev_price
      from priceindex pi
     ) pi;