【发布时间】:2020-11-24 18:20:50
【问题描述】:
我正在使用 BigQuery,并尝试根据分配给每个记录的“拆分”数量为我的每条记录分配分类值。
该表具有按 STR 级别分组的累积记录计数 - 即,如果 2 STR 有 4 个 SKU,则 SKU 将标记为 1、2、3、4。每个 STR 都分配有一个 SPLIT 值,因此如果 STR 的 SPLIT 值为 2,我希望它将其 SKU 分为 2 个类别。我想创建另一个列,将标记为 1-2 的 SKU 分配为“1”,将标记为 3-4 的 SKU 分配为“2”。 (实际数据的规模要大得多,但认为这会更容易。)
+-----+------+---------------+--------+
| STR | SKU | SKU_ROW_COUNT | SPLITS |
+-----+------+---------------+--------+
| 1 | 1230 | 1 | 3 |
| 1 | 1231 | 2 | 3 |
| 1 | 1232 | 3 | 3 |
| 1 | 1233 | 4 | 3 |
| 1 | 1234 | 5 | 3 |
| 1 | 1235 | 6 | 3 |
| 2 | 1310 | 1 | 2 |
| 2 | 1311 | 2 | 2 |
| 2 | 1312 | 3 | 2 |
| 2 | 1313 | 4 | 2 |
| 3 | 2345 | 1 | 1 |
| 3 | 2346 | 2 | 1 |
| 3 | 2347 | 3 | 1 |
+-----+------+---------------+--------+
SPLITS 列是动态的,范围从 1 到 3。每个类别中的 SKU 数量应该相对相等,但这不是优先级,而只是创建的组数。理想情况下,包含新列 (HOST_NUMBER) 的最终表应如下所示:
+-----+------+---------------+--------+-------------+
| STR | SKU | SKU_ROW_COUNT | SPLITS | HOST_NUMBER |
+-----+------+---------------+--------+-------------+
| 1 | 1230 | 1 | 3 | 1 |
| 1 | 1231 | 2 | 3 | 1 |
| 1 | 1232 | 3 | 3 | 2 |
| 1 | 1233 | 4 | 3 | 2 |
| 1 | 1234 | 5 | 3 | 3 |
| 1 | 1235 | 6 | 3 | 3 |
| 2 | 1310 | 1 | 2 | 1 |
| 2 | 1311 | 2 | 2 | 1 |
| 2 | 1312 | 3 | 2 | 2 |
| 2 | 1313 | 4 | 2 | 2 |
| 3 | 2345 | 1 | 1 | 1 |
| 3 | 2346 | 2 | 1 | 1 |
| 3 | 2347 | 3 | 1 | 1 |
+-----+------+---------------+--------+-------------+
【问题讨论】:
标签: sql count google-bigquery window-functions