获取vertica中n个最后值的聚合

时间:2017-10-13 23:07:20

标签: sql analytics vertica

我们的表格包含datessalesitem列。

每件商品的商品价格可能会有所不同,我们希望找到商品的价格,并计算其最近 50销售额的平均价格。

有没有办法在Vertica中使用分析函数来做到这一点?

对于一个受欢迎的项目,所有这50个销售可能来自本周。另一方面,我们可能需要3个月的窗口。

我们可以根据item知道这些窗口是什么吗?

1 个答案:

答案 0 :(得分:1)

您可以使用window-frame子句获取每一行的值:

select t.*,
       avg(t.price) over (partition by item
                          order by t.date desc
                          rows between 49 preceding and current row
                         ) as avg_price_50
from t;

在重新阅读问题时,我怀疑你想要每个项目只有一行。为此,请使用row_number()

select t.item, avg(t.price)
from (select t.*,
             row_number() over (partition by item order by t.date desc) as seqnum
      from t
     ) t
where seqnum <= 50
group by item;