0

我正在创建一个保留群组,它显示我的用户群在我们的应用程序上的保留情况,但我只知道如何计算计数版本中的结果,但是,我真的希望结果是总群组起始组的百分比(即,在第 0 个月,我们在平台上有 1000 个活跃用户,但在第 2 个月,只有 500 个用户仍然活跃,因此第 2 个月的保留百分比将为 50%,在第 3 个月,只有 300 个仍然活跃,因此保留 = 30%) .

我编写的代码计算每个月的计数如下:

select count(distinct u.id), count(t.id), [u.created:month] as ucm, (datediff(month,[u.created:month],[t.createdon:month])) as cohort
from [user_cache as u]
right join [transaction_cache as t] on t.owner = u.id
and t.status = 'successful' and t.type = 'savings'
where [u.created:year] > ['2017-01-01':date:year]
group by ucm, cohort
order by ucm asc

谢谢

4

1 回答 1

0

你需要这样的东西。更改第 4 行中的子查询以选择正确的初始队列。如果运行多年,您将需要在 GROUP BY 中考虑年和月,但逻辑保持不变。

SELECT 
    DATEPART(MONTH,t.createdon) month
    , COUNT(*) activeCohortNumber
    , COUNT(*)*100.00 / 
        (SELECT COUNT(*) FROM dbo.transaction_cache WHERE DATEPART(MONTH,createdon) = 1) 
     AS activeCohortPercent
FROM user_cache AS u
RIGHT JOIN transaction_cache AS t ON t.owner = u.id
GROUP BY DATEPART(MONTH,t.createdon)
于 2020-01-03T18:12:28.963 回答