我是数据库和MySQL的新手。我正在开发一个带有MySQL数据库的股票跟踪软件后端。我在MYSQL查询中遇到问题。
我需要跟踪一段时间内的价格变化。如何根据日期选择两个不同的列和行。例如,我需要MYSQL从日期'2019-02-27'返回'开放'值并从'2019-03-01'日期'关闭'值; 并计算两个值之间的%差异(即十进制)。
是不是可以在MYSQL中进行这种查询,或者我应该编写发送两个查询的程序。一个从'2019-02-27'获得'开放',另一个从'2019-03-01'获得'关闭'。
这是我的问题http://sqlfiddle.com/#!9/eb23e3/6的SQL小提琴
这是任何示例表
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”日期开始“开启”并从'2019-03-01'开始'关闭',然后计算差异,如(2019-02-27)'开放'值为36.00 (2019-03-01)'收盘价'为42.00,因此百分比差异为+ 16.6%。
有了这个你得到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
见demo
我建议运行两个不同的查询,然后计算返回值的差异