【问题标题】:Group rows using the cumulative sum of a third column使用第三列的累积总和对行进行分组
【发布时间】:2021-10-06 12:28:43
【问题描述】:

我有一个包含两列的表格:

  • sort_column = 我用于排序的列
  • value_column = 我感兴趣的指标(一个正整数)

使用 SQL,我需要创建按 sort_column 排序的连续行组,以使每个组中 value_column 的总和尽可能大,但保持在 100 以下(不包括 100)。

在下面找到我想要的结果的示例。

谢谢

sort_column value_column desired_result
1 53 1
2 25 1
3 33 2
4 25 2
5 10 2
6 46 3
7 9 3
8 49 4
9 48 4
10 53 5
11 33 5
12 52 6
13 29 6
14 16 6
15 66 7
16 1 7
17 62 8
18 57 9
19 47 10
20 12 10

【问题讨论】:

  • 你的桌子有多大(或小)?
  • 相当大(几 GB)。这相关吗?
  • 您能否详细说明您的用例?是否可以使用 BigQuery 以外的其他方法来获得您想要的结果?
  • 是的 - 大小总是很重要 :o) 所以,让我从不同的角度来 - 多少行?

标签: sql google-bigquery


【解决方案1】:

好的,经过几次漫长的尝试,我得出结论,使用纯 SQL 是不可能完成任务的,因为所需列的给定值取决于同一列的先前值,而无法从仅前两列,因此如果不使用 BigQuery 不支持的递归 CTE,则无法解决该问题。

我通过为该任务编写一个 javascript UDF 解决了这个问题。它似乎工作正常并产生了预期的结果。

非常感谢大家!

【讨论】:

    猜你喜欢
    • 2020-06-06
    • 2021-05-08
    • 2020-12-23
    • 2020-08-11
    • 1970-01-01
    • 1970-01-01
    • 2015-09-11
    • 2017-02-14
    • 2023-03-14
    相关资源
    最近更新 更多