gpt4 book ai didi

sql - 如何在Presto的SQL(Athena)中计算从一年开始的每个月的平均值?

转载 作者:行者123 更新时间:2023-12-02 19:25:01 24 4
gpt4 key购买 nike

下面是我拥有的表格数据的示例

| 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com