You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

BigQuery中基于另一列最大值取对应列值并聚合的实现方法

BigQuery 账户维度单轮聚合实现方法

BigQuery 原生支持通过数组聚合函数直接实现需求,不需要写多层子查询+自关联的冗余逻辑,单条分组查询即可完成计算。

核心实现逻辑

按account字段分组后,分别完成两个聚合计算:

  • 对gross_revenue字段直接用SUM函数求和
  • 对account_type字段,按original_valid_to倒序排序后取分组内第一条值,即可得到original_valid_to最大值对应的账户类型

参考SQL代码

SELECT
  account,
  ARRAY_AGG(account_type ORDER BY original_valid_to DESC LIMIT 1)[OFFSET(0)] AS account_type,
  SUM(gross_revenue) AS gross_revenue
FROM `你的项目.你的数据集.你的业务表`
GROUP BY account

注意事项

  • 如果同一个账户下存在多条记录的original_valid_to值并列最大,可以在ORDER BY后补充二级排序规则(比如记录入库时间倒序、主键倒序),保证返回结果稳定
  • 该写法扩展成本极低,如果后续需要取最大original_valid_to对应的其他字段值,只需要新增对应字段的ARRAY_AGG聚合逻辑即可,不需要调整查询整体结构
  • 相比「子查询先算每个账户的max(original_valid_to)再回表关联原表取属性」的传统写法,该方案只需要一次聚合计算,查询性能更优

内容的提问来源于stack exchange,提问作者T.B.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 20:09:10