0

いくつかのクエリを実行し、結果を同じデータベースの別のテーブルに保存する単純な統計ツールを作成したいと考えています。

主に、さまざまなテーブル内のアイテムの数、1 か月間に触れたアイテムの数などを追跡したいと考えています。これにより、システムの使用状況に関する分析を得ることができます。これは、データベースの状態を一瞬見ただけでは得られない情報です。

次のクエリがあるとします。

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 は新しい行を挿入するか、既存の行を更新する必要があります。

これは可能ですか、基本的な例を挙げていただけますか?

これは単一のクエリで実行でき、これを自動化するのは非常に簡単で、すべてのロジックを 1 か所に保持し、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 に答える