Postgresql记录每日统计数据

时间:2013-01-20 19:12:47

标签: sql postgresql database-design relational-database postgresql-9.0

晚上好,

我正在尝试创建一个表,每天为我的应用程序存储一系列关于Web使用情况的统计信息(例如没有新用户,总访问等等),我目前正在查询这些,但是我现在想开始存储它们的部分性能(减少聚合查询的负载到单个查找),部分是为了进行历史分析。

我已经为表格提出了以下基本架构(会有更多的列,只是为了给出一个想法)

create table web_stats(
    web_stat_id bigserial primary key,
    date_created timestamp not null default now(),
    user_count integer not null,
    new_user_count integer not null
);
comment on table web_stats is 'Table stores statistics on web usage';

现在,我很高兴创建查询以填充表格(我每天都使用Quartz调度程序来运行查询)

但是我不太确定在过去的日期回溯填充表的最佳方法,我应该使用INSERT语句为应用程序上线以来每天创建一个空行(大约2年前),然后使用更新以填充空白行?或者这可以一举完成吗?有人可以提供一些SQL来创建行吗?

如果我的设计假设有任何问题,请告诉我们!

1 个答案:

答案 0 :(得分:0)

这就是我最终做到的方式

INSERT INTO web_stats (date_created)
    SELECT DATE('2011-08-20')+x.id
    FROM generate_series(0,521) AS x(id);

2011-08-20是申请上线的日期,521是从现在起到目前为止的天数

这会创建一个空表,以便我可以使用date_created字段使用UPDATE语句填充其他字段

也许不是最有效的方法,但它有效