下面是我拥有的表格数据的示例
| date | value |
| 2020-01-01 | 20 |
| 2020-01-14 | 10 |
| 2020-02-02 | 30 |
| 2020-02-11 | 25 |
| 2020-02-25 | 25 |
| 2020-03-13 | 34 |
| 2020-03-21 | 10 |
| 2020-04-06 | 55 |
| 2020-04-07 | 11 |
我想生成如下结果集
| date | value | average |
| 2020-01-01 | 20 | Jan average |
| 2020-01-14 | 10 | Jan average |
| 2020-02-02 | 30 | Jan & Feb average |
| 2020-02-11 | 25 | Jan & Feb average |
| 2020-02-25 | 25 | Jan & Feb average |
| 2020-03-13 | 34 | Jan & Feb & Mar average |
| 2020-03-21 | 10 | Jan & Feb & Mar average |
| 2020-04-06 | 55 | Jan & Feb & Mar & Apr average |
| 2020-04-07 | 11 | Jan & Feb & Mar & Apr average |
我尝试使用窗口函数 OVER() 和 PARTITION(),但我设法按月获取平均值,而不是从一年开始。
请提出任何建议。
谢谢
最佳答案
我想你想要:
select
t.*,
avg(value) over(
partition by year(date)
order by month(date)
) running_avg
from mytable t
这会将每年放入一个单独的分区中,然后按月对分区行进行排序。
关于sql - 如何在Presto的SQL(Athena)中计算从一年开始的每个月的平均值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62499681/