SUM(x)OVER(MOD(x,3)的分区) - 需要澄清

时间:2018-04-02 18:08:05

标签: google-bigquery

在以下查询中,1)如何计算总和列中的值(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

1 个答案:

答案 0 :(得分:4)

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

   
<TextArea fx:id="todoInfo" prefHeight="206.0" prefWidth="100.0" wrapText="true" VBox.vgrow="ALWAYS" />

结果是

#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   
正如你现在所看到的那样 - 所有具有相同x_mod的值都是相加的,这有希望解释为什么你会看到那些6,6,10,10,10,9,9,9

截至你的第二个问题 - 这只是一个例子 - 没有使用MOD(x,3)背后的特殊原因 - 你可以玩MOD(x,2)或MOD(x,4)并探索行为 - 只是供您学习

相关问题