如何修复 BigQuery 中的错误“选择列表表达式 [...] 既不分组也不聚合的引用”?

Posted

技术标签:

【中文标题】如何修复 BigQuery 中的错误“选择列表表达式 [...] 既不分组也不聚合的引用”?【英文标题】:How do I fix the error "select list expression [...] references which is neither grouped nor aggregated" in BigQuery? 【发布时间】:2021-07-15 15:45:52 【问题描述】:

在 BigQuery 中运行以下查询时,我收到错误“选择列表表达式 Opportunity.id 引用既不分组也不聚合”:

SELECT
  Opportunity.id AS `Opportunity_Id`,
  Opportunity.testing_only__c AS `Opportunity_Testing_only`,
  MAX(DatedConversionRate.startdate) AS `DatedConversionRate_Start_date`,
FROM
  `dataset.Opportunity` Opportunity
LEFT JOIN 
  `dataset.DatedConversionRate` DatedConversionRate 
  ON DatedConversionRate.isocode = Opportunity.currencyisocode
WHERE
  DatedConversionRate.startdate < CURRENT_TIMESTAMP()

有什么问题,我该如何解决?

【问题讨论】:

【参考方案1】:

select 中删除Opportunity.id 或按其分组:

SELECT
  Opportunity.id AS `Opportunity_Id`,
  MAX(DatedConversionRate.startdate) AS `DatedConversionRate_Start_date`,
FROM
  `dataset.Opportunity` Opportunity
LEFT JOIN 
  `dataset.DatedConversionRate` DatedConversionRate 
  ON DatedConversionRate.isocode = Opportunity.currencyisocode
WHERE
  DatedConversionRate.startdate < CURRENT_TIMESTAMP()
GROUP BY Opportunity.id

【讨论】:

如果我添加 GROUP BY Opportunity.id,则错误将替换为下一个选择的类似错误:“选择列表表达式 Opportunity.testing_only__c 引用既不分组也不聚合” 也将其分组:GROUP BY Opportunity.id, Opportunity.testing_only__c 所以如果我选择了 30 个字段,我必须对所有字段进行 GROUP BY? 如果你有max() - 那么是的。

以上是关于如何修复 BigQuery 中的错误“选择列表表达式 [...] 既不分组也不聚合的引用”?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用python修复在bigquery中上传csv文件

如何在 BigQuery UI 中安排查询时修复“请求包含无效参数”错误

如何在加载到 Bigquery 时修复“未找到:文件 /bigstore/project/testing/filename.json”错误

如何修复 BigQuery 表中意外重复的数据?

修复 BigQuery 中的“超出资源”并使其运行更快

如何修复此 BigQuery 表架构的更新查询?