ユーザーテーブルからデータを取得し、ユーザー作成時の実行中の合計と累積合計を生成するSQLクエリを作成しました。データは週ごとにグループ化されます(ポストグルのウィンドウ機能を使用)。私は左の外部結合を使用して、ユーザーが作成されていない場所がない週も含めます。ここにクエリがあります...データグラムと外部ジョインが欠けているPostgreSQLの実行合計
<!-- language: lang-sql -->
WITH reporting_period AS (
SELECT generate_series(date_trunc('week', date '2015-04-02'), date_trunc('week', date '2015-10-02'), interval '1 week') AS interval
)
SELECT
date(interval) AS interval
, count(users.created_at) as interval_count
, sum(count(users.created_at)) OVER (order by date_trunc('week', users.created_at)) AS cumulative_count
FROM reporting_period
LEFT JOIN users
ON interval=date(date_trunc('week', users.created_at))
GROUP BY interval, date_trunc('week', users.created_at) ORDER BY interval
これはほぼ完全に動作します。累積値は、ユーザーが作成された週に適切に計算されます。ユーザーが作成されていない数週間は、その時点までの総計ではなく、総計に設定されます。
** The Week Tot列(interval_count)の行は、期待どおり0であるが、Run Tot(cumulative_total)は1053であり、これは総計と等しいことに注意してください。
Week Week Tot Run Tot
-----------------------------------
2015-03-30 | 4 | 4
2015-04-06 | 13 | 17
2015-04-13 | 0 | 1053 **
2015-04-20 | 9 | 26
2015-04-27 | 3 | 29
2015-05-04 | 0 | 1053 **
2015-05-11 | 0 | 1053 **
2015-05-18 | 1 | 30
2015-05-25 | 0 | 1053 **
...
2015-06-08 | 996 | 1031
...
2015-09-07 | 2 | 1052
2015-09-14 | 0 | 1053 **
2015-09-21 | 1 | 1053 **
2015-09-28 | 0 | 1053 **
これは、外が何とか最後の列に総計を適用することができます参加する場合、トータルランニング電流を印加することが可能であることを私には思える私は
Week Week Tot Run Tot
-----------------------------------
2015-03-30 | 4 | 4
2015-04-06 | 13 | 17
2015-04-13 | 0 | 17 **
2015-04-20 | 9 | 26
2015-04-27 | 3 | 29
2015-05-04 | 0 | 29 **
...
をご希望ですが、私はそれをやる方法を失っている。
これは可能ですか?
これはトリックを行ったようです。あなたのお手伝いをありがとう。 – hraynaud