【问题标题】:How do I fix the error "select list expression [...] references which is neither grouped nor aggregated" in BigQuery?如何修复 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()

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

【问题讨论】:

    标签: select group-by google-bigquery reference aggregate


    【解决方案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() - 那么是的。
    猜你喜欢
    • 2017-04-09
    • 2019-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多