我正在尝试使用Oracle 11g(dev中为11.1,生产中为11.2)进行数值分析,特别是对有三列感兴趣的表格(时间戳,设备ID和值)的线性插值。如何使用Oracle SQL执行线性插值?
值列保存来自设备的数据(ID为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的每个时间戳任一侧的两个最接近的时间戳。 发生null是因为我没有两次设备002在01:00:00.000任意一侧出现篡改,我不想推断该值。
从我的理解我可以使用percentile_cont来做到这一点,但我不明白我在网上看到的例子。例如,percentile_cont使用的百分位数是从哪里来的?
在此先感谢您的帮助!
感谢您的回答至今。我对Oracle分析函数非常陌生,我的数据并不像我给出的例子那样整洁。例如,device1对device2上的每个值都有几个值。对于一个设备,这些值的增量大约为十分之一秒,而对于另一个设备则为三分之一秒。编辑问题以提供更多详细信息... – GLaDOS