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

我正在查看代理商的数据,想创建一个关于他们在过去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

解决方案:

假设表中所有的日期都是可用的(如您的示例数据所示),一个选项是 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).

给TA打赏
共{{data.count}}人
人已打赏
解决方案

将JavaScript中的对象转换为数组中的两个对象

2022-5-12 7:00:17

解决方案

当时间是23:59:59时,如何更新Widget?

2022-5-12 7:00:20

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索