【发布时间】:2016-09-26 04:45:27
【问题描述】:
我开始工作的以下查询计算了两条记录之间的周期性回报率。我不知道如何编写这个逻辑,所以它会针对给定的代码在整个表中运行。任何指导将不胜感激。
SELECT
(SELECT closeprice FROM marketdata.nyse
WHERE ticker = 'DDD' and
eoddate < 20150113 order by eoddate desc limit 1) as `cp_t1`
,closeprice as `cp_t0`
, log(
closeprice /
(SELECT closeprice FROM marketdata.nyse
WHERE ticker = 'DDD' and
eoddate < 20150113 order by eoddate desc limit 1)
) as PRoR
FROM marketdata.nyse
WHERE ticker = 'DDD' and
eoddate = 20150113;
它正在返回我想要的和期望的。
cp_t1 cp_t0 PRoR
31.360000610351562 30.88 0.02392378745852884
我的桌子设计如下。
tick_id, name, ticker, eoddate, openprice, highprice, lowprice, closeprice, volume, pror, prorpct
1, 3D Systems Corp, DDD, 2015-01-01, 32.87, 32.87, 32.87, 32.87, 0, ,
2, 3D Systems Corp, DDD, 2015-01-02, 32.98, 33.97, 31.89, 32.42, 2571900, ,
3, 3D Systems Corp, DDD, 2015-01-05, 31.99, 32, 30.3, 30.74, 2890500, ,
4, 3D Systems Corp, DDD, 2015-01-06, 30.85, 31.38, 29.26, 30.15, 2967500, ,
5, 3D Systems Corp, DDD, 2015-01-07, 30.4, 31.22, 30.2, 30.88, 2145000, ,
6, 3D Systems Corp, DDD, 2015-01-08, 31.37, 32.73, 30.83, 32.32, 2988300, ,
【问题讨论】:
-
查看 MariaDB 10.2 的 Windowing functions。
-
有趣。我没有使用过 MariaDB。我会仔细看看的。谢谢。
标签: mysql sql performance