首页 > 解决方案 > 如何在mysql中选择两个不同的日期?

问题描述

我是数据库和 MySQL 的新手。我正在开发一个带有 MySQL 数据库的股票跟踪软件后端。我在 MYSQL 查询中遇到问题。

我需要跟踪一段时间内的价格变化。如何根据日期选择两个不同的列和行。例如,我需要 MYSQL 从日期“2019-02-27”返回“打开”值,从日期“2019-03-01”返回“关闭”值;
并计算两个值(十进制)之间的百分比差异。

是否可以在 MYSQL 中进行这种查询,或者我应该编写发送两个查询的程序。一个从“2019-02-27”获得“开放”,另一个从“2019-03-01”获得“关闭”。

这是我的问题的 SQL 小提琴http://sqlfiddle.com/#!9/eb23e3/6

这是任何示例表

symbol |    date    |  open | close | low   | high 
----------------------------------------------------
   HCL | 2019-02-27 | 36.00 | 38.00 | 34.00 | 40.00
   HCL | 2019-02-28 | 37.00 | 39.00 | 36.00 | 41.00
   HCL | 2019-03-01 | 38.00 | 42.00 | 37.00 | 46.00

如何从日期 '2019-02-27' 开始'open' 和从日期 '2019-03-01' 开始'close' 然后计算百分比差异,如(2019-02-27)'open' 值为 36.00 和(2019-03-01) 'close' 值为 42.00,因此百分比差异为 +16.6%。

标签: mysql

解决方案


有了这个,您将获得 3 个所需的列:

select t.*, 
  concat(
    case when t.close > t.open then '+' else '' end,
    truncate(100.0 * (t.close - t.open) / t.open, 1)
  ) percentdif
from (
  select 
    (select open from dailyprice where date = '2019-02-27') open, 
    (select close from dailyprice where date = '2019-03-01') close
) t

查看演示


推荐阅读