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

请求编写BigQuery查询实现两表合并及分数差值计算

解决方案

以下是满足需求的BigQuery SQL语句:

-- 保留Table B的所有原始记录
SELECT ID, Name, Games, Score
FROM `你的项目名.你的数据集名.TableB`

UNION ALL

-- 生成每个ID的差值记录(Games为null)
SELECT 
  a.ID,
  a.Name,
  NULL AS Games,
  a.Score - COALESCE(b.total_score, 0) AS Score
FROM `你的项目名.你的数据集名.TableA` a
LEFT JOIN (
  -- 预计算Table B中每个ID的Score总和
  SELECT 
    ID,
    SUM(Score) AS total_score
  FROM `你的项目名.你的数据集名.TableB`
  GROUP BY ID
) b ON a.ID = b.ID

关键说明

  1. 原始记录保留:直接查询Table B的所有行,确保原有游戏记录全部包含在结果中。
  2. 差值计算逻辑:
    • 子查询先统计Table B中每个ID的总分,避免重复计算;
    • 用LEFT JOIN关联Table A和汇总结果,保证Table A中所有ID都能生成对应差值行,哪怕该ID在Table B中无记录(此时差值就是Table A的原始Score);
    • COALESCE函数处理Table B无对应ID的情况,防止出现NULL值,默认用0替代。
  3. 重复ID处理:针对Table A中存在重复ID(如12-1710有两条Sonia的记录)的情况,会为每条Table A的行单独生成对应的差值记录,匹配原始表结构逻辑。

示例验证

以ID 12-2112为例:

  • Table B中该ID的Score总和:10291+2271+3211+1625=17398
  • Table A中该ID的Score:23844
  • 差值计算结果:23844-17398=6446,与你给出的示例输出完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 01:01:21