非常感谢您抽出宝贵的时间!
我不确定我是否使用正确的词语来表达我想要描述的内容,但我会尝试一下。
我们希望我们的用户在多个不同日期执行特定操作(游戏),因此我们计算在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
此代码导致:
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'和更多'单独的日期,直到那个日期为止#34;。