GROUP BY有没有办法只对某些列而不是所有列进行汇总聚合GROUP BY?我正在努力实现而不是SELECT a,b,SUM(c) FROM sample.data GROUP BY a,bor 。这在 BigQuery 中可行吗?SELECT a,b,SUM(c) FROM sample.data GROUP BY ROLLUP(a,b)SELECT a,b,SUM(c) FROM sample.data GROUP BY a, ROLLUP(b)
我现在能想到的唯一方法是为GROUPING我不希望汇总的每一列创建一个列,并将这些列过滤为仅0. 但是,在尝试此操作时,我收到Errors encountered during job execution. Resources exceeded during query execution.了不包含ROLLUP(). (即使使用同样的错误GROUP EACH BY。)
想法?
我认为类似 sysntax 不可GROUP BY a, ROLLUP(b)用!它不是!
就像您的情况的解决方法一样,我建议在下面模仿这种语法
所以,假设你有桌子sample.data并且a, b, c, d你需要模仿
SELECT a, b, c, SUM(d) as s
FROM table
GROUP BY a, b, ROLLUP(c)
Run Code Online (Sandbox Code Playgroud)
下面是它的 无 ROLLUP “版本” :
SELECT a, b, c, s
FROM (
SELECT a, b, c, SUM(d) AS s
FROM sample.data
GROUP BY a, b, c
), (
SELECT a, b, NULL AS c, SUM(s) AS s
FROM (
SELECT a, b, c, SUM(d) AS s
FROM sample.data
GROUP BY a, b, c
)
GROUP BY 1, 2, 3
)
ORDER BY a, b, c
Run Code Online (Sandbox Code Playgroud)