mysql - 如何将sql中同一列的当前价格除以最后价格

标签 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

提前致谢

最佳答案

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

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;

关于mysql - 如何将sql中同一列的当前价格除以最后价格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47665907/

相关文章:

mySQL 多连接选择结果作为单行中的列

mysql - 如何在逗号分隔值表中进行搜索?

java - 在 querydsl 中调用 mysql 嵌套/内部函数

mysql - 计数时获取最后完成的(某些条件)id

sql - Oracle - 截断全局临时表

mysql - 我一定要使用 SUM() 进行条件聚合吗?

MySQL:是否可以使用 SELECT 作为唯一权限在 SELECT 之外设置变量?

mysql - 不使用子查询限制结果

sql - NHibernate 和数据库更改/部署

mysql - MySQL 有没有一种方法可以将多个查询合并到同一个表中,以便在自己的行中获得不同的结果?