【发布时间】:2020-03-23 16:00:29
【问题描述】:
所以我正在尝试使用 Oracle 查找时间戳列表的平均值。我有一个为 itemX 增长的表。每次调用 itemX 时,它都会将一个值推送到我的表中。这可能是几天、几个月、几年的数据和时间戳。我所关心的只是最后 10 个时间戳的平均值,而且只有在过去 3 个小时内才会出现。
我的数据看起来像这样......
ROW_NUM itemX DEVICE_TIMESTAMP
1 9094E4E56CAEF8D7E0531965000A285C 3/23/2020 12:46:51.000000 PM
2 9094E4E56CAEF8D7E0531965000A285C 3/23/2020 12:45:50.000000 PM
3 9094E4E56CAEF8D7E0531965000A285C 3/23/2020 12:44:49.000000 PM
4 9094E4E56CAEF8D7E0531965000A285C 3/23/2020 12:43:49.000000 PM
5 9094E4E56CAEF8D7E0531965000A285C 3/23/2020 12:42:49.000000 PM
6 9094E4E56CAEF8D7E0531965000A285C 3/23/2020 12:41:48.000000 PM
7 9094E4E56CAEF8D7E0531965000A285C 3/23/2020 12:40:47.000000 PM
8 9094E4E56CAEF8D7E0531965000A285C 3/23/2020 12:39:46.000000 PM
9 9094E4E56CAEF8D7E0531965000A285C 3/23/2020 12:38:45.000000 PM
10 9094E4E56CAEF8D7E0531965000A285C 3/23/2020 12:37:44.000000 PM
使用:
select row_number() over(order by device_timestamp desc) row_num,
itemX, device_timestamp
from tracks_report
where device_timestamp >= sys_extract_utc(systimestamp) - INTERVAL '03:00' HOUR TO MINUTE
and itemX = '9094E4E56CAEF8D7E0531965000A285C'
order by device_timestamp desc
FETCH NEXT 10 ROWS ONLY
我想要得到的是这 10 行之间的平均时间。我尝试将其分解为秒和分钟,将它们相加除以 10,然后求平均值。但我的价值观不正确。这将是一个函数,我可以根据 itemX id 调用它。
有什么建议吗?我应该得到大约 60 秒的时间。但是我的崩溃和平均结果只有大约 47 秒。
【问题讨论】:
-
平均时间戳是多少?如果只有两个,那是否是“中间”的时间戳,即两个输入时间戳的间隔绝对值相等的时间戳?您期望该样本数据会产生什么结果?
-
对不起,我正在寻找几秒钟内的结果。因此,如果每条记录距最后一条记录 61 秒,那么我会寻找 61 秒。提供的数据非常接近,实时从一个传入记录到下一个记录可能会有几分钟的延迟。