спасибо большое, что нашли время!
Я не уверен, что использую правильные слова для того, что я хочу описать, но я попробую.
Мы хотим, чтобы наши пользователи выполняли определенное действие (игру) в несколько отдельных дней, поэтому мы рассчитываем процент, который сделал это в 1, 2 или более дат.Однако на самом деле мы хотим увидеть, улучшим ли мы этот показатель с течением времени.
У меня есть следующий SQL:
WITH CTE_challenges AS (
SELECT
distinct c.userid,
Count(distinct DATE(c.createdat)) AS dates
FROM
"challenges"."game_user" as c
INNER JOIN
"challenges"."game" AS g
ON g.id = c.gameid
WHERE
c.userid NOT IN (SELECT id FROM "public"."non_users")
AND
g.status = 'ended'
GROUP by
c.userid
)
SELECT
count(distinct CASE WHEN
dates = 1
THEN c.userid
ELSE NULL end) / count(distinct c.userid)::float
AS one_date,
count(distinct CASE WHEN
dates = 2
THEN c.userid
ELSE NULL end) / count(distinct c.userid)::float
AS two_dates,
count(distinct CASE WHEN
dates > 2
THEN c.userid
ELSE NULL end) / count(distinct c.userid)::float
AS more_dates
FROM
CTE_challenges AS c
- Объединение CTE предназначено для отфильтровывания несостоявшихся игр.
Этот код приводит к:
One Date Two Dates More Dates
0.67 0.2 0.13
Я не смог найти способ вместо этого получить список, подобный этому:
Date One Date Two Dates More Dates
12/6 0.67 0.2 0.13
13/6 0.68 0.18 0.14
...
Мы используем Redshift, так что generate_series не вариант.Также я думал о оконной функции, но не смог правильно ее применить..
О, и, пожалуйста, дайте мне знать более точное имя или теги для вопроса, чтобы больше людей могли его найти!
РЕДАКТИРОВАТЬ:
Добавление информации после вопросов.Итак, мы хотим знать процент пользователей, которые играли в 1, 2 или более игр за каждый день, а не только до сих пор.Мы хотим этого, потому что мы вносим изменения, призванные улучшить (повысить) процент пользователей, которые играли в игры в разные дни.Можно сформулировать это следующим образом:
«На каждую дату во времени, какой процент пользователей играл в игры в отдельные даты« 1 »,« 2 »и« больше », вплоть до этой даты».
Это наша таблица game_user: