Postgresql - агрегировать метрики по времени без временных отметок? - PullRequest
0 голосов
/ 12 июня 2018

спасибо большое, что нашли время!

Я не уверен, что использую правильные слова для того, что я хочу описать, но я попробую.

Мы хотим, чтобы наши пользователи выполняли определенное действие (игру) в несколько отдельных дней, поэтому мы рассчитываем процент, который сделал это в 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: enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...