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

报错:不允许按STRUCT类型表达式分组,SQL需展示全量原始及新旧列

问题解决:SQL分组报错与原始数据保留方案

报错原因

你的SQL中Total子查询使用了SUM()聚合函数,但未对tests_total和tests_increase做分组处理。BigQuery会将未分组的非聚合列识别为STRUCT类型,从而触发“不允许按STRUCT类型表达式分组”的错误。同时,聚合操作会合并数据,不符合你保留所有原始数据的需求。

修正方案

根据你的需求(展示所有原始列+新增列),分两种场景处理:

场景1:每行计算自身的tests_total + tests_increase

不需要聚合,直接计算每行的合计值即可:

WITH lep_find As ( 
  SELECT date, 
         admin_level_1, 
         tests_total, 
         tests_increase 
  FROM `bigquery-405008.about_covid_19_public_datasets.summary` 
  LIMIT 1000 
) 
SELECT 
  date,
  admin_level_1,
  tests_total,
  tests_increase,
  tests_total + tests_increase AS total_count 
FROM lep_find;

场景2:每行保留原始数据,同时附加所有行的总合计值

用窗口函数SUM() OVER()计算全局总合计,不会合并原始数据:

WITH lep_find As ( 
  SELECT date, 
         admin_level_1, 
         tests_total, 
         tests_increase 
  FROM `bigquery-405008.about_covid_19_public_datasets.summary` 
  LIMIT 1000 
) 
SELECT 
  date,
  admin_level_1,
  tests_total,
  tests_increase,
  SUM(tests_total + tests_increase) OVER() AS total_count 
FROM lep_find;

注:BigQuery中引用带特殊字符的数据集/表名时,需要用反引号`包裹,原SQL中bigquery-405008.about_covid_19_public_datasets.summary缺少反引号,这也是潜在问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 18:19:58