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)

    评论

报告相同问题?

悬赏问题

  • ¥15 关于#python#的问题:求帮写python代码
  • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?