我是一个SQL新手。
我有一个具有日期时间和值的postgres表。与子分钟条目。我想创建一个新表,它取每分钟的平均值并保存,而不是有子分钟条目。所以像这样:
1-12-07 12:29:56:00 2
1-12-07 12:29:56:16 3
1-12-07 12:29:56:34 3
1-12-07 12:29:56:58 4
1-12-07 12:30:00:00 7
到
1-12-07 12:29:00 3
1-12-07 12:30:00 #
有没有办法在postgres中做到这一点?
我能想到的唯一解决方案是使用python脚本来完成这个技巧。但是,由于我拥有大量数据,这将永远需要。
答案 0 :(得分:0)
所以这将是可怕的,低效的和不完整的答案,建议写一个脚本(只是我的.02)
应该是这样的,因为问题中没有提供sqlFiddle:
select average(my_count)
from
(
select my_date, my_time,my_count
from my_table
group by my_date, extract(minute from my_time)
)
答案 1 :(得分:0)
为了做到这一点,您必须按截断时间分组结果:
insert into "NewTable"
select minute, avg(value) from (select date_trunc('minutes', date) as minute, value from "Time") as Average group by minute;