Я пытаюсь использовать Oracle 11g (11.1 в dev, 11.2 в производстве) для числового анализа, в частности линейной интерполяции в таблице, в которой есть три интересующих столбца: временная метка, deviceid и значение.
Столбцы значений содержат данные с устройства (с идентификатором deviceid), полученные в момент времени, указанный во временной метке. Например, это фиктивные данные, но они дают представление:
time | deviceid | value
----------------|------------|-----------
01:00:00.000 | 001 | 1.000
01:00:01.000 | 001 | 1.030
01:00:02.000 | 001 | 1.063
01:00:00.050 | 002 | 553.10
01:00:01.355 | 002 | 552.30
01:00:02.155 | 002 | 552.43
Временные метки устройства 001 не совпадают с временными метками устройства 002, но мне нужно, чтобы значения обоих устройств 001 и 002 были в одной строке с одной меткой времени, соответствующей метке времени для устройства 001. Я хочу получить в итоге что-то вроде этого:
time | device 001 | device 002
----------------|--------------|------------
01:00:00.000 | 1.000 | null
01:00:01.000 | 1.030 | 552.520
01:00:02.000 | 1.063 | 552.405
Если значение для устройства 002 было линейно интерполировано на основе значений для устройства 002, собранных на двух ближайших отметках времени по обе стороны от каждой отметки времени для устройства 001. Нулевое значение возникает, потому что у меня нет двух отметок времени для устройства 002 по обе стороны от 01: 00: 00.000, и я не хочу экстраполировать значение.
Насколько я понимаю, для этого я могу использовать percentile_cont, но я не понимаю примеров, которые видел в Интернете. Например, откуда берется процентиль, используемый percentile_cont?
Заранее спасибо за помощь!