Amazon redshift 如何计算SQL表中前面数字的百分比?

Amazon redshift 如何计算SQL表中前面数字的百分比?,amazon-redshift,periscope,Amazon Redshift,Periscope,我正在创建一个保留队列,它显示了我的应用程序用户群的保留情况,但我只知道如何在计数版本中计算结果,然而,我真的希望结果是总队列起始组的百分比(即,在第0个月,平台上有1000名活跃用户,但在第2个月,只有500名用户仍然活跃,因此第2个月的保留率为50%,第3个月,只有300名用户仍然活跃,因此保留率=30%) 我编写的代码用于计算以下每个月的计数: select count(distinct u.id), count(t.id), [u.created:month] as ucm, (date

我正在创建一个保留队列,它显示了我的应用程序用户群的保留情况,但我只知道如何在计数版本中计算结果,然而,我真的希望结果是总队列起始组的百分比(即,在第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行中的子查询以选择正确的初始队列。如果在多个年份中运行此操作,您将需要在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)

它是在查询潜望镜中缓存的数据,因此代码必须与红移兼容。我对SQL非常陌生,我认为它是tsql,但我可能在那里犯了一个错误。您使用的是哪种产品?“SQL”只是一种查询语言,而不是特定数据库产品的名称(您查询的是无效的标准SQL).我相信在做了一些研究之后我正在使用postgreSQL。我们的数据库通过AWS红移运行。