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

BigQuery执行SQL报错location列未分组或未聚合问题求助

报错原因分析

你遇到的报错触发核心是SQL语法规则要求:当SELECT子句中同时存在非聚合普通字段和聚合函数时,所有非聚合的普通字段必须全部放到GROUP BY子句中声明聚合维度。你的外层SQL中同时选了location普通字段和max(new_vaccinations)聚合函数,但没有写GROUP BY location,因此触发了如下报错:

SELECT list expression references column location which is neither grouped nor aggregated at [1:8]

除此之外你的SQL还存在另外两处逻辑错误,修复完语法问题后也会触发报错:

  • 子查询通过LIMIT 3返回了3行总接种量数值,外层WHERE条件用=匹配多值,会触发「单值子查询返回多行」的报错,多值匹配应该用IN运算符
  • 业务逻辑不匹配:子查询计算的是每个国家累计总接种量,外层却用单日接种字段new_vaccinations和累计值匹配,二者统计维度完全不一致,无法得到你期望的结果
修复方案

根据你统计新冠疫苗接种数据的需求,分两种常见场景给出修复代码:

场景1:获取总接种量排名前三的国家及对应总接种数(最符合你现有子查询的逻辑)

SELECT 
  location, 
  SUM(new_vaccinations) AS total_vaccinated
FROM `nomadic-vine-330117.PortfolioProject.Covid_Vaccinations`
WHERE continent IS NOT NULL
GROUP BY location
ORDER BY total_vaccinated DESC
LIMIT 3;

场景2:获取总接种量前三的国家,及对应各国的单日最高接种量

SELECT 
  location, 
  MAX(new_vaccinations) AS max_daily_vaccinations
FROM `nomadic-vine-330117.PortfolioProject.Covid_Vaccinations`
WHERE location IN (
  -- 先查到总接种量前三的国家名称
  SELECT location
  FROM `nomadic-vine-330117.PortfolioProject.Covid_Vaccinations`
  WHERE continent IS NOT NULL
  GROUP BY location
  ORDER BY SUM(new_vaccinations) DESC
  LIMIT 3
)
-- 按国家分组统计每个国家的单日最高接种量
GROUP BY location;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 18:36:04