首页 > 解决方案 > 如何使用 Vertica AVG [分析]

问题描述

我有一个 Vertica 表,如下例所示:

表数据示例

我想编写 SQL 查询,计算每个站点的“平均”速率,但 shell 只计算其速率高于站点平均速率的设备。

所以我的查询结果应该是

预期结果

由于站点 1 的平均费率为 3,因此我们只需计算 4 和 5,结果为 4.5。由于站点 2 的平均速率为 8,因此我们只需计算 8 和 9,结果为 8.5。

这个问题的查询是什么?谢谢。

标签: sqlaveragevertica

解决方案


我想你想要:

select site, avg(rate)
from (select t.*, avg(t.rate) over (partition by t.site) as avg_rate
      from t
     ) t
where rate > avg_rate
group by site;

要在子句中使用窗口函数结果where,您需要一个子查询。


推荐阅读