3

次のようなテーブルがあります。

CREATE TABLE counts
(
    T TIMESTAMP NOT NULL,
    C INTEGER NOT NULL
);

そこから次のビューを作成します。

CREATE VIEW micounts AS 
SELECT DATE_TRUNC('minute',t) AS t,SUM(c) AS c FROM counts GROUP BY 1;

CREATE VIEW hrcounts AS
SELECT DATE_TRUNC('hour',t) AS t,SUM(c) AS c,SUM(c)/60 AS a
FROM micounts GROUP BY 1;

CREATE VIEW dycounts AS
SELECT DATE_TRUNC('day',t) AS t,SUM(c) AS c,SUM(c)/24 AS a
FROM hrcounts GROUP BY 1;

問題は、毎月のカウントを作成して、毎日の合計を何で割って平均列、つまり特定の月の日数を取得するかを知りたいときに発生します。

私はあなたができるPostgreSQLでの日数を取得することを知っています:

SELECT DATE_PART('days',DATE_TRUNC('month',now())+'1 MONTH'::INTERVAL-DATE_TRUNC('month',now()))

しかしnow()、私は を使用できません。グループ化が完了した月が何月であるかを何らかの形で知らせる必要があります。何か提案、つまり何を置き換える必要がありますか??? このビューで:

CREATE VIEW mocounts AS
SELECT DATE_TRUNC('month',t) AS t,SUM(c) AS c,SUM(c)/(???) AS a
FROM dycounts
GROUP BY 1;
4

1 に答える 1