在DB中创建一个新表以从已存在的大表中提取数据

时间:2014-06-20 05:21:35

标签: c# sql postgresql pgadmin

我正在开发一个数据库,该数据库有大约2年的数据,大约有1亿行和30列,每10秒不同参数的值。我想创建一个新表,这些数据的平均值对于每个数据日期只包含1行。每个日期的数据库大约有100 000行。 表名是进程 主键是id

我怎么能这样做,因为每当我在这个已经存在的表中搜索某些内容时,需要很长时间才能找到所需的输出。

1 个答案:

答案 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))上使用表达式索引。