PostgreSQL:计算具有给定ID的行之间的AVG

时间:2018-07-18 12:19:03

标签: postgresql

我正在使用Postgresql。 假设我有一个transactions_table,其中只有两列:
-月份总数(整数)
-给定月份(浮动)的交易价值

棘手的部分:几个月来没有交易。这些月份根本不在表中。即我可能有汇总月份数字1、2、7、9(第3、4、5、6、8月没有行)的数据。

我需要创建一个新的averages_table,并将transactionstable中每个月的前12个月的平均交易价值(显然,没有合计的月份<12)。
我需要过去12个月的平均值,而不是之前12行的平均值。 我该怎么办?

1 个答案:

答案 0 :(得分:1)

似乎您应该将数据限制在派生表(FROM子句中的子查询)中的所需时间段内,并在受限数据集上计算平均值,如下所示:

select month, product_id, avg(transaction_value) 
from (
    select month, product_id, transaction_value 
    from transactions
    where month between 1806 - 12 and 1806
    ) s
group by month, product_id

其中1806是所需时间的最后一个月(可能是查询参数)。