【发布时间】:2014-09-02 16:32:30
【问题描述】:
我有一个订单表,其中有一列表示是买入还是卖出,行通常按时间戳排序。我想做的是对连续买入的组加上他们的卖出进行操作。例如B B S B S B B S -> (B B S) (B S) (B B S)
例子:
order_action | timestamp
-------------+---------------------
buy | 2013-10-03 13:03:02
buy | 2013-10-08 13:03:02
sell | 2013-10-10 15:58:02
buy | 2013-11-01 09:30:02
buy | 2013-11-01 14:03:02
sell | 2013-11-07 10:34:02
buy | 2013-12-03 15:46:02
sell | 2013-12-09 16:00:03
buy | 2013-12-11 13:02:02
sell | 2013-12-18 15:59:03
最后我将运行一个聚合函数(这些组是这样我可以根据其卖出订单排除整个组),所以GROUP BY 或分区窗口似乎是正确的方法,但我无法弄清楚如何获得这个特定的分组。
【问题讨论】:
-
如果您有任何尝试,请发布您的代码
-
您可以添加您希望看到的输出示例吗?
-
会不会每组买只有一个卖?
-
What I'd like to do is operate on groups of consecutive buys...operate是什么?也就是说,你真正想要做什么?你这样做有什么问题?为未定义的问题提出解决方案很棘手。 -
我之前问过一个类似的问题,它可能会有所帮助。 stackoverflow.com/questions/18889056/…
标签: sql postgresql aggregate-functions window-functions