如何解决缺少分组依据值时,SQL累积总和不显示
我有一些每月的数据,如下所示:
Month | Category | Monthly Value
2020-07-01| Food | 1
2020-07-01| Entertainment | 4
2020-08-01| Entertainment | 2
2020-09-01| Entertainment | 1
我想计算每个类别的累积总和,并得到如下结果:
Month | Category | Cumulative Sum
2020-07-01 | Food | 1
2020-08-01 | Food | 1
2020-09-01 | Food | 1
2020-07-01 | Entertainment | 4
2020-08-01 | Entertainment | 6
2020-09-01 | Entertainment | 7
我正在编写窗口总和查询,如下所示:
SELECT
month,category,sum("monthly value") OVER (PARTITION BY "category" ORDER BY "month" ASC ROWS UNBOUNDED PRECEDING) AS "Cumulative Sum"
from (
select date_trunc('month',daily_date) as month,sum(daily_value) as "monthly value"
from sample_table
group by date_trunc('month',category)
但是,我得到如下信息:
Month | Category | Cumulative Sum
2020-07-01 | Food | 1
2020-07-01 | Entertainment | 4
2020-08-01 | Entertainment | 6
2020-09-01 | Entertainment | 7
为什么在2020-08-01
和2020-09-01
的几个月中没有出现“食品”类别的累计金额?如何使结果按预期显示(如第二张表所示)。
我正在使用Redshift btw。 谢谢!
解决方法
使用cross join
生成行,然后使用left join
引入值:
select m.month,c.category,t.monthly_value,sum(t.monthly_value) over (partition by c.category order by m.month) as running_monthly_value
from (select distinct month from t) m cross join
(select distinct category from t) c left join
t
on t.month = m.month and t.category = c.category;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。