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

如何在BigQuery中规避重复记录,执行基于最新时间的求和聚合

BigQuery 去重聚合(取每个ID最新记录后求和)

要实现每个ID只取最新operation_time对应的记录,再对这些记录求和,用BigQuery的窗口函数就能搞定,给你两种实用写法:

方法一:子查询+ROW_NUMBER()

先给每个ID的记录按时间倒序编号,只保留编号为1的最新记录,再求和:

WITH latest_records AS (
  SELECT 
    id,
    your_sum_column, -- 替换成你实际要累加的列名
    operation_time,
    ROW_NUMBER() OVER(PARTITION BY id ORDER BY operation_time DESC) AS rn
  FROM your_table -- 替换成你的数据表名
)
SELECT 
  SUM(your_sum_column) AS total_sum
FROM latest_records
WHERE rn = 1;

方法二:QUALIFY子句(更简洁)

BigQuery支持QUALIFY直接筛选窗口函数结果,省去子查询嵌套:

SELECT 
  SUM(your_sum_column) AS total_sum
FROM (
  SELECT 
    id,
    your_sum_column,
    operation_time
  FROM your_table
  QUALIFY ROW_NUMBER() OVER(PARTITION BY id ORDER BY operation_time DESC) = 1
);

关键逻辑说明

  • PARTITION BY id:按ID分组,确保每个ID的记录单独处理
  • ORDER BY operation_time DESC:把每个ID的记录按时间从新到旧排序
  • ROW_NUMBER():给每个ID组内的记录编序号,最新的那条序号为1,筛选后就得到每个ID的唯一最新记录,再求和就不会重复累加了

内容的提问来源于stack exchange,提问作者jake_jj

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 19:22:43