wggwfnh 2019-04-13 15:00 采纳率: 0%
浏览 3125

mysql如何实现两行记录相减

需求是需要统计某只股票的某个时间段的区间涨幅,表结构如下:

CREATE TABLE `money` (
  `id` int(11) NOT NULL,
  `code` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL,
  `name` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL,
  `pchange` double NOT NULL,
  `inflow` double NOT NULL,
  `amount` bigint(11) NOT NULL,
  `price` double NOT NULL,
  `high` double NOT NULL,
  `low` double NOT NULL,
  `open` double NOT NULL COMMENT '开盘',
  `yclose` double NOT NULL COMMENT '收盘',
  `amplitude` double NOT NULL COMMENT '振幅',
  `dchratio` double NOT NULL COMMENT '换手率',
  `datetime` int(11) NOT NULL,
  `type` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

我的思路是先找出时间段的数据(order by datetime),然后通过(最后一条记录的price - 首条记录的price)/ 首条记录的price *100

但不知道怎么实现,希望有人能提供 一个方法。

当然,有更好的思路就更好了,我也担心性能有问题

  • 写回答

3条回答 默认 最新

  • weixin_41262940 2019-04-13 20:42
    关注

    定义3个变量:time1,time2,result 。
    可以封装成一个方法或存储过程,2个时间点为参数

    declare @time1 datetime,@time2 datetime,@result decimal(8,3)

    select @result = 100 * ((select price from money where datetime =@time2)-(select price from money where datetime = @time1))/(select price from money where datetime=@time1)

    评论

报告相同问题?

悬赏问题

  • ¥35 平滑拟合曲线该如何生成
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站