次のような2つの列を持つテーブルがあります。
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列に重複する値はないと想定できます。
最後のアクションから始めて、連続して行われた同じアクションの数をカウントするにはどうすればよいですか?
連続する同じアクションの数に制限はなく、任意のアクションが最後のアクションになる可能性があります。また、さまざまなアクションに制限はありません。例のデータを単純化するために、2 つだけを使用しました。
この例のデータでは、結果が 3 になると予想しています。これは、最後のアクションが「b」であり、3 回連続して発生したためです。
ウィンドウ関数と句を組み合わせて解決策を達成できると思いますが、そのWITH RECURSIVE
方法がわかりません。