質問編集履歴

5

クエリを修正

2023/04/11 11:17

投稿

sysder
sysder

スコア25

test CHANGED
File without changes
test CHANGED
@@ -48,7 +48,7 @@
48
48
  select
49
49
  date,
50
50
  count(distinct user_id),
51
- sum(first_flag) over(order by date)
51
+ sum(first_flag) over(order by date rows unbounded preceding)
52
52
  from
53
53
  table_A_added_first_flag
54
54
  group by

4

説明を追加

2023/04/11 11:08

投稿

sysder
sysder

スコア25

test CHANGED
File without changes
test CHANGED
@@ -30,5 +30,33 @@
30
30
  date
31
31
  ```
32
32
 
33
+ table_Aに初めて登場したuser_idに1が入っているカラム「first_flag」を追加してそのカラムを集計するようにしてみました。
34
+
35
+ table_A_added_first_flag
36
+ |user_id|date|first_flag|
37
+ |--:|--:|--:|
38
+ |1|2023-01-01|1|
39
+ |2|2023-01-01|1|
40
+ |1|2023-01-02|0|
41
+ |3|2023-01-02|1|
42
+ |1|2023-01-03|0|
43
+ |3|2023-01-03|0|
44
+
45
+
46
+
47
+ ```
48
+ select
49
+ date,
50
+ count(distinct user_id),
51
+ sum(first_flag) over(order by date)
52
+ from
53
+ table_A_added_first_flag
54
+ group by
55
+ date
56
+ ```
57
+
58
+ しかしfirst_flagでgroup byしなさいというエラーが出ます。
59
+ group byにfirst_flagを追加すると、集計がばらけてしまいます。
60
+
33
61
 
34
62
  毎日のUUと通算のUUを別々に集計して、dateでinner joinして一つのテーブルにするしか方法はないでしょうか。

3

説明文修正

2023/04/10 10:08

投稿

sysder
sysder

スコア25

test CHANGED
File without changes
test CHANGED
@@ -29,20 +29,6 @@
29
29
  group by
30
30
  date
31
31
  ```
32
- 相関サブクエリを使って、
32
+
33
- ```ここに言語名を入力
34
- select
35
- date,
36
- count(distinct user_id) as 毎日のUU,
37
- sum(count(distinct user_id)) over(order by date rows unbounded preceding) as 通算のUU
38
- from
39
- table_A as x
40
- inner join table_A as y
41
- where
42
- x.date >= y.date
43
- group by
44
- date
45
- ```
46
- とすると通算の方は欲しい数字になるのですが、毎日のUUの方の数字が少なくなってしまいます。
47
33
 
48
34
  毎日のUUと通算のUUを別々に集計して、dateでinner joinして一つのテーブルにするしか方法はないでしょうか。

2

クエリの修正

2023/04/10 09:55

投稿

sysder
sysder

スコア25

test CHANGED
File without changes
test CHANGED
@@ -39,7 +39,7 @@
39
39
  table_A as x
40
40
  inner join table_A as y
41
41
  where
42
- x.date <= y.date
42
+ x.date >= y.date
43
43
  group by
44
44
  date
45
45
  ```

1

クエリを修正

2023/04/10 09:51

投稿

sysder
sysder

スコア25

test CHANGED
File without changes
test CHANGED
@@ -26,6 +26,8 @@
26
26
  sum(count(distinct user_id)) over(order by date rows unbounded preceding) as 通算のUU
27
27
  from
28
28
  table_A
29
+ group by
30
+ date
29
31
  ```
30
32
  相関サブクエリを使って、
31
33
  ```ここに言語名を入力
@@ -38,6 +40,8 @@
38
40
  inner join table_A as y
39
41
  where
40
42
  x.date <= y.date
43
+ group by
44
+ date
41
45
  ```
42
46
  とすると通算の方は欲しい数字になるのですが、毎日のUUの方の数字が少なくなってしまいます。
43
47