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

Google Sheets Query计算各农产品最新日期均价问题求助

解决Google Query获取农产品品类最新平均价格的分组错误问题

我懂你现在的困扰——想用Google Query从Google Sheets里提取每个农产品品类对应的各交易商最新价格的平均值,但一直被分组相关的错误卡住,结果也不符合预期。咱们先理清需求,再一步步修正代码。

需求拆解

从你的手动计算结果来看,你要的是:

  1. 对每个交易商+农产品品类的组合,找到该组合下的最新日期对应的价格(即每个交易商在每个品类下的最新报价)
  2. 再按农产品品类分组,计算该品类下所有交易商最新报价的平均值

原代码的问题

你原来的查询 select max(A), D, avg(E) where B = 'cpt-novo' group by D 有两个核心问题:

  • 逻辑偏差:avg(E)计算的是该品类所有历史价格的平均值,而非各交易商最新报价的平均值
  • 分组规则冲突:Google Query要求非聚合列必须出现在group by中,max(A)是聚合函数,但你同时选择了未分组的D和未聚合的E,这就触发了ADD_COL_TO_GROUP_BY_OR_AGG或CANNOT_GROUP_WITHOUT_AGG错误

修正后的代码

var queryString = encodeURIComponent("select D, avg(E) where (C,D,A) in (select C,D,max(A) where B='cpt-novo' group by C,D) group by D");

代码逻辑解释

咱们把这个查询拆成两部分看:

  1. 子查询(获取每个交易商+品类的最新日期):
    select C,D,max(A) where B='cpt-novo' group by C,D
    这部分会筛选出basis为cpt-novo的所有数据,然后按**交易商(C列)+农产品品类(D列)**分组,得到每个组合的最新日期。

  2. 主查询(计算品类的平均最新价格):
    select D, avg(E) where (C,D,A) in (...) group by D
    这部分会筛选出所有符合「交易商+品类+日期=子查询结果」的行(也就是每个交易商每个品类的最新报价),再按农产品品类分组,计算该品类下所有最新报价的平均值。

结果验证

用你提供的测试数据,这个查询会精准返回你手动计算的结果:

  • wheat-5-class: 8500
  • wheat-11.5: 9133.333333
  • wheat-12: 9333.333333
  • wheat-12.5: 9550
  • wheat-13: 9783.333333
  • wheat-13.5: 10100
  • barley: 9000

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:59:35