gpt4 book ai didi

google-bigquery - Google Big Query 中的 GROUP BY 问题

转载 作者:行者123 更新时间:2023-12-04 20:38:36 24 4
gpt4 key购买 nike

我是 Google Big Query(和 Stack Overflow)的新手,主要测试 Big Query 设法处理精心设计和糟糕的查询的速度。

我在 MySQL 上运行(缓慢)的繁琐查询时遇到困难。 Big Query 提示 GROUP BY 内容。这是起始查询:

SELECT nonstops.term, nonstops.lincat, nonstops.id, 
MIN(
(1-((LEAST(1,minusone.catimp / nonstops.catimp) + LEAST(1,minusone.catweb / nonstops.catweb))/2))*
(1-((LEAST(1,minusone.catimp / nonstops.catimp) + LEAST(1,minusone.catweb / nonstops.catweb))/2))*
(1-((LEAST(1,minusone.catimp / nonstops.catimp) + LEAST(1,minusone.catweb / nonstops.catweb))/2))*
(nonstops.catweb * nonstops.catweb * nonstops.catimp / nonstops.fnvweb / nonstops.fnvimp)
)
AS calc FROM nonstops INNER JOIN EACH minusone ON nonstops.lincat = minusone.lincat AND nonstops.term = minusone.term
WHERE nonstops.lincat = 556 GROUP BY nonstops.term, nonstops.lincat
ORDER BY `calc` DESC

请注意,由于两个表都很大,因此将“EACH”添加到 INNER JOIN 中。我删除了数据集名称以使其更易于阅读。

GROUP BY 旨在仅返回由连接对每个 term/lincat 对进行的计算的最低值。

我得到的错误是:

(L1:62):GROUP BY 列表中不存在表达式“phrases.nonstops.id”

我不想要在 GROUP BY 中,但我已经添加了它,然后我得到:

表达式 ' calc ' 不在 GROUP BY 列表中

我也不想要!但如果我添加它,我会得到:

(L7:1):无法按聚合分组

我查看了文档并搜索了答案,但没有运气。任何提示或链接将不胜感激。

最佳答案

当您按 BigQuery(或任何 SQL)中的某些内容进行分组时,结果字段应该是按字段分组或聚合。

否则,您应该获得 nonstops.id 的哪个值?可能有很多与一对 (nonstops.term, nonstops.lincat) 相关联。

您可以选择 id 字段的最大值、最小值等;按此字段分组(但随后您将计算 term、lingcat 和 id 的每个元组);或者,如果您不需要它,只需删除此字段 - 如果您想要每个 (nonstops.term, nonstops.lincat) 对的 'calc' 表达式的结果。

BigQuery 提示 `calc` 的原因是不同的 - BigQuery(当您使用旧 SQL 方言时)不使用反引号 (`) 进行引用。所以它认为它们是名称的一部分,它是一个与“calc”字段分开的新字段。只需删除它们或使用 BigQuery 的引号 [ 和 ] - [calc] .或者切换到标准 SQL 方言。

关于google-bigquery - Google Big Query 中的 GROUP BY 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30686033/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com