0

我想编写一个简单的统计工具来执行一些查询并将结果保存在同一数据库的另一个表中。

主要是我想跟踪不同表中的项目数,一个月内触摸的项目数等等。这将使我能够获得一些关于系统使用情况的分析,这些信息是我无法通过查看数据库状态获得的信息。

假设我有这个查询:

select count(*) as mytab_mcount from mytab where updated > CURRENT_DATE - INTERVAL '1 months'; 

现在我确实想将此查询的结果存储在一个stats表中,以便我可以查询它以获得一些趋势数据。

显然我可以用一些东西来编码,但我想知道我是否只能在 SQL 中做到这一点,Postgres 混合了它。

我想把结果放在一个表格中

date         mytab_mcount    some_stat
2013-09-01   1234            NUL

显然,SQL 应该插入新行或更新现有行。

这可能吗,你能举一个基本的例子吗?

我这可以在一个查询中完成,它很容易自动化,将所有逻辑保存在一个地方,并有一个 cron 作业来执行它。

4

1 回答 1

1

您是否尝试过类似的方法:

INSERT INTO stat_table (stat_date, table_name, row_count, some_stat)
SELECT CURRENT_DATE, 'mytab', count(*), 2+3
FROM mytab 
WHERE updated > CURRENT_DATE - INTERVAL '1 months';

或者

UPDATE stat_table 
SET row_count = (SELECT count(*) FROM mytab WHERE updated > CURRENT_DATE - INTERVAL '1 months'),
    stat_date = CURRENT_DATE,
    some_stat = (SELECT 1+3)
WHERE table_name = 'mytab';
于 2013-08-09T13:40:08.703 回答