SELECT list表达式引用的列位置既不是分组也不是聚合在[1:8]


select location, max(new_vaccinations)
from `nomadic-vine-330117.PortfolioProject.Covid_Vaccinations` 
where  new_vaccinations = 
(
select sum(new_vaccinations) as totalVaccinated
from `nomadic-vine-330117.PortfolioProject.Covid_Vaccinations`
where continent is not null
group by location
order by totalVaccinated desc
limit 3
);

我得到这个错误:

SELECT list表达式引用的列位置既不是分组也不是聚合在[1:8]

bigquery。

您的查询有语法错误:

  • 聚合到最后一行并选择一个位置而不说明是哪个
  • =比较一个值与可能包含许多行的结果集。
  • 我认为你不能在整个路径上使用反引号,但必须在单个名称上使用它们:nomadic-vine-330117PortfolioProjectCovid_Vaccinations。我可能错了。

你的查询中也有语义错误:

  • 子查询每个位置返回一行。您选择其中的三个,但是将它们的总和与单行的值进行比较。只有当三个顶级位置在表中各只有一行时,这才能匹配。但是,为什么要聚合呢?

你说你想要按国家(地点)排名第三的疫苗接种率。不过,你似乎真的希望这个国家根据疫苗接种情况排在第三位。当然,我可能错了。

第一步按疫苗接种数量对各国进行排名。然后选择#3。

select *
from
(
select
location,
dense_rank() over(partition by country order by sum(new_vaccinations) desc) as rnk
from `nomadic-vine-330117`.portfolioproject.covid_vaccinations cv
group by location
) ranked
where rnk = 3;

看看这是如何处理关系的,以及你是否希望这样对待它们。

最新更新