我正在开发一个数据库,该数据库有大约2年的数据,大约有1亿行和30列,每10秒不同参数的值。我想创建一个新表,这些数据的平均值对于每个数据日期只包含1行。每个日期的数据库大约有100 000行。 表名是进程 主键是id
我怎么能这样做,因为每当我在这个已经存在的表中搜索某些内容时,需要很长时间才能找到所需的输出。
答案 0 :(得分:1)
是否可以创建一个新表,该表将采用单个日期的所有数据(大约1万行)的平均值并将它们放在一行中
你想要这样的东西:
CREATE TABLE averages AS
SELECT
date_trunc('day', data_capture_timestamp_column) AS day,
avg(col1) AS col1_avg,
avg(col2) AS col2_avg,
...
FROM my_table
GROUP BY 1;
GROUP BY 1
通过第一个GROUP
参数向SELECT
说明数据,在这种情况下是日期。建议在my_table( date_trunc('day', data_capture_timestamp_column))
上使用表达式索引。