【发布时间】:2012-04-27 16:32:38
【问题描述】:
我有一个存储股票每日价格的 sql 表。每天收市后都会插入新记录。我想找出价格连续上涨的股票。
该表有很多列,但这是相关的子集:
quoteid stockid closeprice createdate
--------------------------------------------------
1 1 1 01/01/2012
2 2 10 01/01/2012
3 3 15 01/01/2012
4 1 2 01/02/2012
5 2 11 01/02/2012
6 3 13 01/02/2012
7 1 5 01/03/2012
8 2 13 01/03/2012
9 3 17 01/03/2012
10 1 7 01/04/2012
11 2 14 01/04/2012
12 3 18 01/04/2012
13 1 9 01/05/2012
14 2 11 01/05/2012
15 3 10 01/05/2012
quoteid 列是主键。
在表格中,股票 id 1 的收盘价每天都在上涨。股票id 3 波动很大,股票id 2 的价格在最后一天下跌。
我正在寻找这样的结果:
stockid Consecutive Count (CC)
----------------------------------
1 5
2 4
如果你能得到连续连胜的日期输出,那就更好了:
stockid Consecutive Count (CC) StartDate EndDate
---------------------------------------------------------------
1 5 01/01/2012 01/05/2012
2 4 01/01/2012 01/04/2012
StartDate 是价格开始上涨的时间,EndDate 是牛市实际结束的时间。
我认为这不是一个容易的问题。我在这里查看了其他帖子,这些帖子也处理了这种连续场景,但它们不符合我的需求。如果您知道任何与我相似的帖子,请告诉我。
【问题讨论】:
-
您希望连续增加的最小长度是多少 - 仅大于一天?或者以某种方式被它们的减少所抵消?如果有相关数据,我假设您希望查看多次运行。
-
数据中是否存在任何差距(例如周末)以及需要在那里做什么?
-
我没有连续增加的规则,它必须大于前一天。是的,我正在寻找多次运行。我将对过去 3 个月、6 个月或更多的数据运行此查询。数据会有空隙,我们可以使用主键列来获取前一天的记录