使用BigQuery SQL计算各产品的平均价格与最新价格
BigQuery 按产品计算平均价格与最新价格实现方案
你可以在一次分组查询中直接完成两个指标的计算,不需要拼接两个子查询,BigQuery 原生支持通过 ARRAY_AGG 聚合函数实现按规则取分组内指定值,最终可运行的SQL如下:
SELECT Product, AVG(Price) AS `Avg(Price)`, -- 按日期倒序排序后取第一个价格,即为最新价格 ARRAY_AGG(Price ORDER BY Date DESC LIMIT 1)[OFFSET(0)] AS `Latest(Price)` FROM MyTable GROUP BY Product ORDER BY Product
逻辑说明
- 按
Product字段分组,每个产品对应一行结果 AVG(Price)直接计算当前产品所有记录的价格平均值ARRAY_AGG(Price ORDER BY Date DESC LIMIT 1)会将当前产品的所有价格按日期倒序排列,仅保留最新日期对应的价格,再通过[OFFSET(0)]将数组中的值取出作为独立字段返回
注:你原本提供的第一个查询存在语法问题,
SELECT子句中的Price既不是分组字段也没有使用聚合函数包裹,直接运行会报错,上述写法已经规避了该问题。
内容的提问来源于stack exchange,提问作者Micha Hein
相关产品推荐
相关产品推荐

