実現したいこと
下記のtable_Aから、
user_id | date |
---|---|
1 | 2023-01-01 |
2 | 2023-01-01 |
1 | 2023-01-02 |
3 | 2023-01-02 |
1 | 2023-01-03 |
3 | 2023-01-03 |
下記のように集計したいです。
date | 日毎のUU | 通算のUU |
---|---|---|
2023-01-01 | 2 | 2 |
2023-01-02 | 2 | 3 |
2023-01-03 | 2 | 3 |
クエリを書いてみたのですが下記ですと毎日のUUの積み重ねになってしまいます。
select date, count(distinct user_id) as 毎日のUU, sum(count(distinct user_id)) over(order by date rows unbounded preceding) as 通算のUU from table_A group by date
table_Aに初めて登場したuser_idに1が入っているカラム「first_flag」を追加してそのカラムを集計するようにしてみました。
table_A_added_first_flag
user_id | date | first_flag |
---|---|---|
1 | 2023-01-01 | 1 |
2 | 2023-01-01 | 1 |
1 | 2023-01-02 | 0 |
3 | 2023-01-02 | 1 |
1 | 2023-01-03 | 0 |
3 | 2023-01-03 | 0 |
select date, count(distinct user_id), sum(first_flag) over(order by date rows unbounded preceding) from table_A_added_first_flag group by date
しかしfirst_flagでgroup byしなさいというエラーが出ます。
group byにfirst_flagを追加すると、集計がばらけてしまいます。
毎日のUUと通算のUUを別々に集計して、dateでinner joinして一つのテーブルにするしか方法はないでしょうか。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。