У меня есть таблица с двумя столбцами, как:граф равно, последовательные значения в упорядоченном наборе строк
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
, но я не знаю, как это сделать.
Работы БОЛЬШОЕ! Большое спасибо. Вы спасли мой день :-) –