前提・実現したいこと
取引テーブル(tx)を元に毎日その日のユニークユーザー(UU)数とその日までの通算のUU数をpostgresqlで集計したいです。
元となるデータ
id | user_id | date |
---|---|---|
1 | 1 | 1970-01-01 |
2 | 1 | 1970-01-01 |
3 | 2 | 1970-01-01 |
4 | 3 | 1970-01-01 |
5 | 4 | 1970-01-02 |
6 | 5 | 1970-01-02 |
7 | 1 | 1970-01-02 |
8 | 2 | 1970-01-03 |
9 | 6 | 1970-01-03 |
期待する結果
年月日 | 日別UU | 通算UU |
---|---|---|
1970-01-01 | 3 | 3 |
1970-01-02 | 3 | 5 |
1970-01-03 | 2 | 6 |
通算UUでは、それぞれの日までに取引実績がある人のユニーク数を算出したいです。
1970-01-01までに3人(1,2,3)、1970-01-02までに5人(1,2,3,4,5)、1970-01-03までに6人(1,2,3,4,5,6)というのを求めたいです。
発生している問題・エラーメッセージ
Error running query: DISTINCT is not implemented for window functions
該当のソースコード
sql
SELECT date , count(distinct user_id) over(ORDER BY date) FROM tx GROUP BY date ORDER BY date ASC
試したこと
上記コードはウィンドウ関数でdistinctが使えないため不可ということで色々調べたりしましたが、日毎に通算を算出する方法がわかりませんでした。
まだ回答がついていません
会員登録して回答してみよう