为不存在的数据创建额外的日期行(Redshift SQL)。

问题描述 投票:0回答:1

我正在查看代理商的数据,想创建一个关于他们在过去6个月内的销售业绩的概览。我有的代理商刚开始工作,有的在3个月前就开始工作了,但我想创建一个视图,在这个视图中,每个代理商总是有6行,不管她是什么时候开始工作的,这些行中都不会有任何销售记录。这个视图是importat,因为我想有一个选项,平均的值和显示不同的粒度在某些时候(代理水平,团队水平等...)我的工作与Redshift SQL和代理数据。这就是我的查询。

select date, id, name, team, country, sum(sales) 
from agent 
where date >= date_trunc('month', dateadd(month, -6, current_date) and date <= current_date
group by 1,2,3,4,5 
order by 1

这给了我下面的输出(没有绿色的行),我怎么能添加额外的行月罗曼,在二月开始的代理。任何想法,建议?

enter image description here

sql date row amazon-redshift add
1个回答
0
投票

假设表中所有的日期都是可用的(如您的示例数据所示),一个选项是 cross join 可用的日期与代理列表生成所有可能的组合,然后将原表与 left join:

select d.date, n.id, n.name, n.team, n.country, sum(a.sales) 
from (select distinct date from agent) d
cross join (select distinct id, name, team, country from agent) n
left join agent a on a.date = d.date and a.id = n.id
group by 1, 2, 3, 4, 5 
order by 1, 2

这就意味着: id 唯一标识一个代理;否则,你将需要在 left join (关于 name, team, country).

© www.soinside.com 2019 - 2024. All rights reserved.