Я использовал функции WINDOW и раньше, но только при работе с данными, которые имеют фиксированную каденцию / интервал. Вероятно, мне не хватает чего-то простого в агрегации, но у меня никогда не было сценария, в котором я не работаю с фиксированными интервалами.
У меня есть таблица сэмплов записей в произвольные временные метки. Выборка регистрируется только тогда, когда она является дельтой по сравнению с предыдущей выборкой, а частота выборки является совершенно нерегулярной из-за большого количества условий. Таблица очень проста:
id (int)
happened_at (timestamp)
sensor_id (int)
new_value (float)
Я пытаюсь создать запрос, который будет включать в себя счетчик всех выборок до случившегося_от заданной строки результатов. Итак, учитывая очень простой набор данных из двух строк:
id|happened_at |sensor_id| new_value
1 |2019-06-07:21:41|134679 | 123.331
2 |2019-06-07:19:00|134679 | 100.009
Я бы хотел, чтобы набор результатов выглядел так:
happened_at |sensor_id | new_value | sample_count
2019-06-07:21:41|134679 |123.331 |2
2019-06-07:19:00|134679 |123.331 |1
Я пробовал:
SELECT *,
(SELECT count(sample_history.id) OVER (PARTITION BY score_history.sensor_id
ORDER BY sample_history.happened_at DESC))
FROM sensor_history
ORDER by happened_at DESC
и дух не пойдет на работу.
(SELECT count(*)
FROM sample_history
WHERE sample_history.happened_at <= sample_timestamp)
Высоко ценится понимание.