【问题标题】:SQL mean amount per group ordered by time按时间排序的每组 SQL 平均数量
【发布时间】:2022-01-11 09:05:25
【问题描述】:

我有下表

timestamp   ID      eur 
----------------------- 
2022-01-01  A       10
2022-01-02  A       20
2022-01-01  B       30
2022-01-02  B       40
2022-01-03  B       50
2022-01-04  B       60

现在我对特定 ID所有以前的信息感兴趣。然后我想用这些信息做点什么,比如说计算平均值。这是我的目标:

timestamp   ID      eur     sum_all     mean_all    
------------------------------------------------    
2022-01-01  A       10      10          10
2022-01-02  A       20      30          15
2022-01-01  B       30      30          30
2022-01-02  B       40      70          35
2022-01-03  B       50      120         40
2022-01-04  B       60      180         45

这看起来很简单,但我就是不知道如何在 SQL 中做到这一点。

感谢您的帮助。谢谢!

【问题讨论】:

    标签: sql postgresql sum concatenation average


    【解决方案1】:

    您可以使用sumavg 窗口函数:

    select *, sum(eur) over(partition by ID order by timestamp) as sum_all, 
    avg(eur) over(partition by ID order by timestamp) as mean_all
    from table_name
    

    【讨论】:

    • 谢谢。我是否还可以获得过去至少 30 天和最多 6 个月的所有先前订单(例如在 Redshift 中)?
    猜你喜欢
    • 2021-05-16
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 2013-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-15
    相关资源
    最近更新 更多