Я пытаюсь использовать Oracle 11g (11.1 в dev, 11.2 в производстве) для числового анализа, в частности, линейной интерполяции для таблицы, которая имеет три интересующих столбца: метку времени, идентификатор устройства и значение.
Столбцы значений содержат данные с устройства (с идентификатором 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, и я не хочу экстраполировать значение.
Из того, что я понимаю, я могу использовать процентное соединение для этого, но я не понимаю примеров, которые я видел в Интернете. Например, откуда взялся бы процентиль, используемый процентилем_контом?
Заранее спасибо за помощь!