Amazon redshift 如何使分母成为SQL中同一行中每个数字的常数?

Amazon redshift 如何使分母成为SQL中同一行中每个数字的常数?,amazon-redshift,periscope,Amazon Redshift,Periscope,我试图创建一个表,将平均销售额除以某个月内注册帐户的用户群,然而,我只能计算出除以该特定月份内进行购买的人数,该数字低于该群体的总金额。如何更改下面的查询,使每个月的平均成功交易金额除以0 多谢各位 select sum (t.amount_in_dollars)/ count (distinct u.id) as Avg_Successful_Transacted, (datediff(month,[u.created:month],[t.createdon:month])) as Coho

我试图创建一个表,将平均销售额除以某个月内注册帐户的用户群,然而,我只能计算出除以该特定月份内进行购买的人数,该数字低于该群体的总金额。如何更改下面的查询,使每个月的平均成功交易金额除以0

多谢各位

select sum (t.amount_in_dollars)/ count (distinct u.id)  as Avg_Successful_Transacted, (datediff(month,[u.created:month],[t.createdon:month])) as Cohort, [u.created:month] as Months,
count (distinct u.id) as Users
from [transaction_cache as t]
left join [user_cache as u] on t.owner = u.id
where t.type = 'savings' and t.status = 'successful' and [u.created:year] > ['2017-01-01':date:year]
group by cohort, months
order by Cohort, Months

您需要将队列大小划分为其自己的子查询或CTE,以便计算当月创建的与队列的基准月匹配的不同用户总数

我通过使用date_trunc‘month’函数按用户创建的月份对其进行分类来实现这一点,但您可能希望根据生成群组的特定业务逻辑以不同的方式实现这一点

我不使用Periscope,因此下面的示例查询的结构是纯红移的,但希望很容易将语法转换为Periscope的预期格式:

以队列大小为 选择“月”创建的日期::日期作为月 ,以队列大小区分 从用户_缓存u 按1分组 , 将所有交易列为 选择“月”创建的日期::日期作为月 ,createdon 物主 类型 地位 ,金额(单位:美元) 身份证件 ,创建 从事务\u缓存t 左连接用户\u缓存在t.owner=u.id上 其中t.type=‘savings’ 而t.status=‘成功’ 而美国则创建了“2017-01-01” 选择SUMt.amount(以美元/秒为单位)队列大小作为平均成功交易 ,datediffMONTH,u.created,t.createdon作为队列 ,创建为月份 ,countDISTINCT u.id作为用户 来自队列的 加入队列大小s在t上队列月=s队列月 在t.owner=u.id上以u的身份左加入用户\u缓存 按s.队列大小、队列、月份分组 按队列、月份排序 ;
您需要将队列大小划分为其自己的子查询或CTE,以便计算当月创建的与队列的基准月匹配的不同用户总数

我通过使用date_trunc‘month’函数按用户创建的月份对其进行分类来实现这一点,但您可能希望根据生成群组的特定业务逻辑以不同的方式实现这一点

我不使用Periscope,因此下面的示例查询的结构是纯红移的,但希望很容易将语法转换为Periscope的预期格式:

以队列大小为 选择“月”创建的日期::日期作为月 ,以队列大小区分 从用户_缓存u 按1分组 , 将所有交易列为 选择“月”创建的日期::日期作为月 ,createdon 物主 类型 地位 ,金额(单位:美元) 身份证件 ,创建 从事务\u缓存t 左连接用户\u缓存在t.owner=u.id上 其中t.type=‘savings’ 而t.status=‘成功’ 而美国则创建了“2017-01-01” 选择SUMt.amount(以美元/秒为单位)队列大小作为平均成功交易 ,datediffMONTH,u.created,t.createdon作为队列 ,创建为月份 ,countDISTINCT u.id作为用户 来自队列的 加入队列大小s在t上队列月=s队列月 在t.owner=u.id上以u的身份左加入用户\u缓存 按s.队列大小、队列、月份分组 按队列、月份排序 ;