首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Financial数据库中添加缺少的行

在Financial数据库中添加缺少的行
EN

Stack Overflow用户
提问于 2016-10-06 22:02:48
回答 2查看 39关注 0票数 0

我有以下的数据库,从今天的日期回到1997年。(如下所示)

代码语言:javascript
复制
# TIME               , OPEN      , HIGH     , LOW      , CLOSE    , VOLUME
'2016-09-22 21:00:00',  '1.30743', '1.30876', '1.29149', '1.29579', '168985'
'2016-09-20 21:00:00',  '1.29869', '1.29969', '1.29828', '1.29873', '764'
'2016-09-19 21:00:00',  '1.30275', '1.30648', '1.2947' , '1.29847', '201072'
'2016-09-18 21:00:00',  '1.29991', '1.3081' , '1.2996' , '1.30795', '142635'
'2016-09-15 21:00:00',  '1.32371', '1.32475', '1.2994' , '1.29958', '256907'
'2016-09-14 21:00:00',  '1.32318', '1.32784', '1.31791', '1.32371', '598912'
'2016-09-13 21:00:00',  '1.31879', '1.32404', '1.31381', '1.32318', '241908'

在仔细检查时,我注意到有缺失的数据点。例如,在上面的片段中,缺少2016-09-21 21:00:00。

2016-09-16 21:00:00和2016-09-17 21:00:00也丢失了,但是我并不担心这些日期,因为它们是周末。

我在考虑对丢失的数据使用平均值。一些数据点缺少3行,这使情况更加复杂。

我想也许

代码语言:javascript
复制
(a + b) / (q+1) = x

a = data point after the missing row 
b = data point before the missing row 
q = amount of data points missing 
x = increment value

结果将会是

代码语言:javascript
复制
# TIME               , OPEN      , HIGH     , LOW      , CLOSE    , VOLUME
'2016-09-22 21:00:00',  '1.30743', '1.30876', '1.29149', '1.29579', '168985'
'2016-09-21 21:00:00',  '1.30306', '1.30422', '1.29488', '1.29726', '85256'
'2016-09-20 21:00:00',  '1.29869', '1.29969', '1.29828', '1.29873', '764'
'2016-09-19 21:00:00',  '1.30275', '1.30648', '1.2947' , '1.29847', '201072'
'2016-09-18 21:00:00',  '1.29991', '1.3081' , '1.2996' , '1.30795', '142635'
'2016-09-15 21:00:00',  '1.32371', '1.32475', '1.2994' , '1.29958', '256907'
'2016-09-14 21:00:00',  '1.32318', '1.32784', '1.31791', '1.32371', '598912'
'2016-09-13 21:00:00',  '1.31879', '1.32404', '1.31381', '1.32318', '241908'

是否有方法可以使用SQL代码查找并将缺少的行添加到数据库中(星期五和星期六除外)?

EN

回答 2

Stack Overflow用户

发布于 2016-10-07 09:31:47

具体操作方法:

  • 使用来生成所有日期。
  • WHERE子句添加到toss Sat/Sun.
  • 执行一次LEFT JOIN,以查看在市场将剩余日期放入临时表时哪些日期是假日期。现在,构建一个从临时表联接两次原始数据的丑陋查询,以便获得这两行、求平均值并生成假数据。H215H116将其放入INSERT.

为什么不这样做:

坦率地说,我认为这是错误的。现在,您将拥有一个包含一些有效数据和一些估计数据的表。任何用户(包括您自己)都会上当受骗,以为这些都是有效数据。请不要编造这样的“谎言”。

票数 1
EN

Stack Overflow用户

发布于 2016-10-06 22:44:01

我认为在查询中做到这一点并不容易。除非性能非常重要,否则我会使用过程语言:https://mariadb.com/kb/en/mariadb/create-procedure/

这会让你按部就班地完成。

我没有时间写出整个查询,但我的建议是,首先在晚上9点生成自1997年以来的所有日期的列表,然后将其过滤到列表中没有出现的日期。然后,对于每个,查询原始表以生成所需的数字。然后将整个列表插入到您的表中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39898109

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档