如何解决计算平均值AVG,包括Redshift DB中日期范围内的缺失数据
考虑到我有以下数据集
s_date | sales
------------+-------
2020-08-04 | 10
2020-08-05 | 20
2020-08-07 | 10
2020-08-08 | 20
2020-08-09 | 10
2020-08-10 | 30
2020-08-11 | 20
2020-08-12 | 10
我想计算每周“销售”的平均值。请注意,从2020-08-03开始的一周的日期2020-08-03和2020-08-06缺少数据。
当我使用 AVG()函数计算每周平均值时,它会根据可用记录来计算平均值。
以下是我正在尝试的查询以及从中得到的响应。
select trunc(date_trunc('WEEK',s_date)::timestamp) as week,avg(sales)
from test_temp.sales group by week;
结果:
week | avg
------------+-----
2020-08-03 | 14
2020-08-10 | 20
但是我想以0作为缺少日期的值来计算平均值。因此,应使用以下值进行平均计算。
s_date | sales
------------+-------
2020-08-03 | 0
2020-08-04 | 10
2020-08-05 | 20
2020-08-06 | 0
2020-08-07 | 10
2020-08-08 | 20
2020-08-09 | 10
2020-08-10 | 30
2020-08-11 | 20
2020-08-12 | 10
预期结果:
week | avg
------------+-----
2020-08-03 | 10 // Expected value
2020-08-10 | 20
有人可以让我知道如何计算预期的平均值吗?
此致,
保罗
解决方法
取总和除以7:
select trunc(date_trunc('WEEK',s_date)::timestamp) as week,sum(sales) / 7
from test_temp.sales
group by week;
编辑:
要处理最后一周,您可以执行以下操作:
select trunc(date_trunc('WEEK',sum(sales) / least(7,current_date - trunc(date_trunc('WEEK',s_date)::timestamp))
from test_temp.sales
group by week;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。