我有一个包含两列的表,例如:
CREATE TABLE actions (
action_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"action" text NOT NULL
);
以及其中的以下数据:
action_time | action
----------------------------+--------
2016-12-30 14:12:33.353269 | a
2016-12-30 14:12:38.536818 | b
2016-12-30 14:12:43.305001 | a
2016-12-30 14:12:49.432981 | a
2016-12-30 14:12:53.536397 | b
2016-12-30 14:12:57.449101 | b
2016-12-30 14:13:01.592785 | a
2016-12-30 14:13:06.192907 | b
2016-12-30 14:13:11.249181 | b
2016-12-30 14:13:13.690897 | b
(10 rows)
您可以假设action_time列中没有重复值。
如何计算从最后一个动作开始连续执行的相同动作的数量?
连续相同动作的数量没有限制,任何动作都可以是最后一个。此外,对各种不同的操作没有限制:我只使用了两个来简化示例数据。
对于这个示例数据,我希望结果为 3。这是因为最后一个操作是“b”,并且它连续发生了 3 次。
我认为可以结合窗口函数和WITH RECURSIVE
子句来实现解决方案,但我不知道该怎么做。