我目前使用这样的:如何获得时间戳的平均值? PostgreSQL的
select avg(tank_level)
from (
select row_number() over (order by id) as rn, tank_level
from data_tanksensor
where sensors_on_site_id = 91
) s
group by (rn + ((Select count(*)/10 From data_tanksensor where sensors_on_site_id = 91)-1))/ (Select count(*)/10 From data_tanksensor where sensors_on_site_id = 91)
;
要想从表10点的平均值。此表还包含时间戳,我希望获得10个平均tank_level的平均时间戳。这被用来创建一个历史图。如果任何人都可以帮助我修改此查询,以获得平均时间戳,将不胜感激。提前致谢。
的表看起来像这样
. id sensors_on_site_id tank_level timestamps [PK] bigint integer double precision time without time zone ........... .................. ................ ...................... 12345 91 7.5 2017-03-24 11:16:31.143362 12346 91 7.6 2017-03-24 11:21:31.148639 12347 91 5.4 2017-03-24 11:26:31.155739 12348 91 3.6 2017-03-24 11:31:31.156478 12349 91 8.5 2017-03-24 11:36:31.157303 12350 91 4.2 2017-03-24 11:41:31.172008
再举例来说,如果我只希望这是我原来的查询均线将
select avg(tank_level) from ( select row_number() over (order by id) as rn, tank_level from data_tanksensor where sensors_on_site_id = 91 ) s group by (rn + ((Select count(*)/2 From data_tanksensor where sensors_on_site_id = 91)-1))/ (Select count(*)/2 From data_tanksensor where sensors_on_site_id = 91) ;
粗的 查询丢失,将平均时间戳的部分这正是我想弄明白的。但我试图得到的预期结果是
avg timestamp double precision timestamp without time zone ................ ........................... 6.833333 2017-03-24 11:21:31... 5.433333 2017-03-24 11:36:31...
再次,这只是样本数据,一次数百行的平均行数。谢谢
请编辑您的问题,并提供样本数据和预期的结果。 F.ex. –
F.ex. 'to_timestamp(avg(摘录(从timestamp_col开始))''? – pozs