У меня есть набор данных из приложения регистрации.Он регистрирует время и то, был ли мой виджет в порядке:
CREATE TABLE runs (time int, ok int);
INSERT INTO runs VALUES
(1, NULL),
(2, 1),
(3, 1),
(4, 1),
(5, NULL),
(6, NULL),
(7, 1),
(8, 1),
(9, NULL),
(10, 1)
Я хотел бы использовать оконную функцию (я думаю), чтобы определить длину этих прогонов "ok" -ness.Таким образом, конечный набор данных должен выглядеть следующим образом:
time | ok_length
----------------
2 | 3
7 | 2
10 | 1
Насколько я знаю:
SELECT
time,
ok,
CASE WHEN
LAG(ok) OVER (ORDER BY time) IS NOT null
THEN SUM(ok) OVER (ORDER BY time) END
FROM runs
ORDER BY time
Но это совершенно неправильно.Кто-нибудь может помочь?Возможно, мне нужно что-то сделать с фреймом в конце оконной функции, но у этого фрейма должна быть условная остановка, когда он достигает значения NULL.Вот сценарий SQL, с которым я работаю: http://sqlfiddle.com/#!17/98bf4/3