Sql 获取vertica中n个最后值的聚合
我们有一个包含日期、销售额和商品列的表 一件商品的价格在每次销售中都可能不同,我们想找出一件商品的价格,它在最近50次销售中的平均值 有没有办法在Vertica中使用分析函数来实现这一点 对于一款受欢迎的商品,所有这50笔销售都可能从本周开始。另一方面,我们可能需要有一个3个月的窗口Sql 获取vertica中n个最后值的聚合,sql,analytics,vertica,Sql,Analytics,Vertica,我们有一个包含日期、销售额和商品列的表 一件商品的价格在每次销售中都可能不同,我们想找出一件商品的价格,它在最近50次销售中的平均值 有没有办法在Vertica中使用分析函数来实现这一点 对于一款受欢迎的商品,所有这50笔销售都可能从本周开始。另一方面,我们可能需要有一个3个月的窗口 我们可以知道每项的窗口是什么吗?您可以使用window frame子句获取每行的值: select t.*, avg(t.price) over (partition by item
我们可以知道每项的窗口是什么吗?您可以使用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;
在重读这个问题时,我怀疑您希望每个项目都有一行。为此,请使用行号:
显示一些示例数据和预期结果以及您的尝试。是的,选择相关行集将属于其中n=50,因此您可以使用。因为可能有一种更简单的方法来编写查询,尽管我无法确认语法是否有效,因为没有在文档中列出它。
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;