作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有下表来监控每天的价格,我想在两天之间进行计算,例如今天的收盘价 - 前一天开盘价,例如周四收盘价 - 周三开盘价,因此我可以看到差异。
此外,周末没有记录,所以我如何进行2次不同的计算,例如 1. 周一收盘价 - 周日返回相同的周一价格, 2. 周一收盘价 - 前周五开盘价等
INSERT INTO goods(date,day,open,high,low,close,`range(daily high- low)`) VALUES
('2018-11-01','Thu',1.08430,1.08766,1.08175,1.08285,0.00591),
('2018-11-02','Fri',1.08319,1.08585,1.07988,1.07988,0.00597),
('2018-11-05','Mon',1.08258,1.08389,1.08011,1.08155,0.00378),
('2018-11-06','Tue',1.08160,1.08489,1.07461,1.07469,0.01028),
('2018-11-07','Wed',1.07543,1.07646,1.07094,1.07150,0.00552),
('2018-11-08','Thu',1.07148,1.07571,1.07083,1.07393,0.00488),
('2018-11-09','Fri',1.07409,1.07651,1.07124,1.07125,0.00527),
('2018-11-12','Mon',1.07190,1.07389,1.06759,1.06878,0.00630),
('2018-11-13','Tue',1.06830,1.06977,1.06609,1.06658,0.00368)
理想输出1:
date, day, open, high, low,close, diff
('2018-11-01','Thu',1.08430,1.08766,1.08175,1.08285, ..
('2018-11-02','Fri',1.08319,1.08585,1.07988,1.07988, - 0.00442
('2018-11-05','Mon',1.08258,1.08389,1.08011,1.08155,- 0.00164
('2018-11-06','Tue',1.08160,1.08489,1.07461,1.07469,-0.00789
输出2:
date, day, open, high, low,close, diff
('2018-11-01','Thu',1.08430,1.08766,1.08175,1.08285, ..
('2018-11-02','Fri',1.08319,1.08585,1.07988,1.07988, - 0.00442
('2018-11-05','Mon',1.08258,1.08389,1.08011,1.08155, 1.08155
('2018-11-06','Tue',1.08160,1.08489,1.07461,1.07469,-0.00789
我使用的是php7.1,mysql
最佳答案
如果您使用的是 MySQL 8.0,则可以使用 LAG()
访问按日期排序的前一条记录。这将很高兴地忽略天数差距,因此周一收盘价将与周五开盘价进行比较:
SELECT
g.*,
g.close - LAG(g.open) OVER(ORDER BY g.date) price_diff
FROM goods g
<小时/>
使用旧版本的 MySQL,通常会使用自联接和带有 NOT EXISTS
条件的相关子查询来检索上一条记录:
SELECT g.*, g.close - g1.open price_diff
FROM goods g
LEFT JOIN goods g1
ON g1.date < g.date
AND NOT EXISTS (
SELECT 1 FROM goods g2 WHERE g2.date < g.date AND g2.date > g1.date
)
g
是当前记录(例如:今天)。 g1
代表昨天的记录:为了识别它,我们指示 RDBMS:
g1
的日期低于 g
的日期g
) 且高于昨天 (g1
) 的记录 (g2
)这两个条件的组合允许 RDMS 唯一标识相关记录(昨天的),然后可以在计算中使用其值。
关于mysql - 如何计算不同行的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54622899/
在我的 android 应用程序中,我想在同一行中实现 2 个文本字段。如果文本太长可以转到下一行。所以我使用了更精简的水平布局并添加了 2 个文本字段。 [例如:TextView1、TextV
由于node使用了javascript,它可以充当webrtc peer吗? 然后我可以将它编码为 VP8 流并广播给所有其他对等方吗? 最佳答案 WebRTC 是一个浏览器 API 而不是 Java
我是一名优秀的程序员,十分优秀!