我正面临这个错误:
BIGQUERY SELECT list expression references column CHANNEL_ID which is neither grouped nor aggregated at [10:13]
我不知道为什么会这样,有人可以向我解释一下吗?
这是我的代码:
SELECT
t0.CHANNEL_ID,
t1.CHANNEL_DISPLAY_NAME
FROM
(SELECT
TIMESTAMP_TRUNC(_PARTITIONTIME, MONTH) as `DATE`,
CHANNEL_ID
FROM
`pops-204909.yt_kids.p_content_owner_basic_a3_yt_kids`
WHERE
DATE(_PARTITIONTIME) between "2017-08-01" and "2017-08-31"
GROUP BY
`DATE`) t0
LEFT JOIN
(SELECT
TIMESTAMP_TRUNC(_PARTITIONTIME, MONTH) as `DATE`,
CHANNEL_DISPLAY_NAME
FROM
`pops-204909.yt_kids.p_content_owner_ad_revenue_raw_a1_yt_kids`
WHERE
DATE(_PARTITIONTIME) between "2017-08-01" and "2017-08-31"
GROUP BY
`DATE`) t1 ON t0.DATE = t1.DATE
最佳答案
当您使用 GROUP BY
- 相应的 SELECT 列表中的所有表达式必须是 GROUP BY 中的表达式或应该使用 AGGREGATION 函数的表达式 - 如 MIN、MAX 等。查看有关 GROUP BY
clause 的更多信息
因此,在您的情况下,两个子查询分别丢失 CHANNEL_ID
和 CHANNEL_DISPLAY_NAME
在各自的 GROUP BY
.或者取决于您的逻辑,它们应该带有一些聚合功能。
注意:上面解释了您看到的错误。而不是这个 - 即使你会修复那个特定的错误,你的查询对我来说也没有多大意义 - 但我希望你有一些想法:o)
关于google-bigquery - BIGQUERY SELECT 列表表达式引用了 CHANNEL_ID 列,该列既未在 [10 :13] 处分组也未聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52360162/