sum(x)上方(通过mod(x,3)的分区) - 需要澄清



在以下查询中,1(如何计算"总和"中的值(6,6,6,10,10,10,9,9,9(?2(为什么使用mod(x,3(,为什么不使用mod(x,2(或mod(x,4(?需要澄清

SELECT
  x,
  SUM(x) OVER (PARTITION BY MOD(x, 3)) AS sum
FROM UNNEST([1, 2, 3, 4, 5, 4, 3, 2, 1]) AS x;

以上查询在此页面中,https://cloud.google.com/bigquery/docs/reference/standard-sql/functions-and-operators#sum

回答您的第一个问题 - 在下方运行,只有一个额外的字段

#standardSQL
SELECT
  x,
  MOD(x, 3) AS x_mod,
  SUM(x) OVER (PARTITION BY MOD(x, 3)) AS SUM
FROM UNNEST([1, 2, 3, 4, 5, 4, 3, 2, 1]) AS x   

结果是

Row x   x_mod   sum  
1   3   0       6    
2   3   0       6    
3   1   1       10   
4   4   1       10   
5   4   1       10   
6   1   1       10   
7   2   2       9    
8   5   2       9    
9   2   2       9     

如您现在所看到的 - 所有具有相同x_mod的值都是求和的,希望可以解释为什么您看到这些6,6,10,10,10,10,9,9,9,9,9

在您的第二个问题上 - 这只是一个例子 - 使用mod(x,3(背后的任何特殊原因 - 您可以使用mod(x,2(或mod(x,4(并探索行为 - 只是让您学习

最新更新