sql - 如何根据日期范围对值求和并按 MAX 日期分组?
问题描述
我有如下数据集 - 按周和产品汇总的数量和销售额
Week Product Quantity Sales
---- ------- -------- -----
1 12a 6 600
2 12a 4 400
3 12a 3 300
4 12a 1 100
5 12a 3 300
6 12a 1 100
7 12a 4 400
8 12a 6 600
9 12a 2 200
对于每周,我需要将那一周加上前 3 周的数量和销售额相加
期望的结果是:
Week Product Quantity Sales
---- ------- -------- -----
1 12a 14 1400 --> Week 1 + Week 2 + Week 3 + Week 4 but row labeled Week 1
2 12a 11 1100
我觉得我需要一个循环来每周评估
解决方案
使用窗口函数:
select t.*,
sum(quantity) over (partition by product
order by week
rows between current row and 3 following
) as quantity,
sum(sales) over (partition by product
order by week
rows between current row and 3 following
) as sales
from t;
推荐阅读
- google-data-studio - 基于其他计算字段创建计算字段
- java - 如何修复 GridLayout/GridBagConstraints 中的错误?
- python - Python Kivy UnicodeEncodeError
- gradle - Vaadin Gradle 插件:任务 vaadinBuildFrontend 失败并出现依赖错误
- excel - VBA在组合框中获取选定的形状名称
- windows - 在 electron-builder 之后找出当前正在运行的构建目标
- css - 动态解析 SCSS 规则中的图标字体代码
- javascript - 如何在 JS 中以人类可读格式打印 JSON 字符串
- java - org.apache.catalina.servlet4preview.http.HttServletResponse 在哪里?
- pandas - 熊猫循环 groupby