如何在BigQuery中生成特定循环规律的Row_Count序列?
在BigQuery中生成指定循环序列的解法
可以通过分组周期计算结合条件判断实现这个重复序列逻辑,具体SQL如下:
WITH numbered_data AS ( SELECT Id, -- 生成连续行号,若Id本身是连续递增的,可直接用Id代替此rn ROW_NUMBER() OVER(ORDER BY Id) AS rn FROM your_table -- 替换为你的实际表名 ) SELECT Id, CASE -- 前两个5行块(每个周期的前10行):生成1-5的序列 WHEN (rn - 1) % 16 < 10 THEN ((rn - 1) % 5) + 1 -- 第三个6行块(每个周期的后6行):生成1-6的序列 ELSE ((rn - 1) % 16 - 10) + 1 END AS Row_Count FROM numbered_data ORDER BY Id;
逻辑说明:
- 生成连续行号:用
ROW_NUMBER()确保每行有一个连续递增的序号(如果你的Id本身是连续无间隔的,可省略CTE直接用Id替代rn)。 - 定义大周期:你的循环模式是「2个5行序列 + 1个6行序列」,总长度为
5+5+6=16行,用(rn-1)%16计算每行在周期内的偏移量。 - 分块生成序列:
- 偏移量
0-9对应前两个5行块,通过(offset)%5 +1循环生成1-5的序列; - 偏移量
10-15对应6行块,通过offset-10 +1生成1-6的序列。
- 偏移量
测试你提供的示例数据,这个SQL会精准生成你需要的Row_Count序列。
内容的提问来源于stack exchange,提问作者Ola
相关产品推荐
相关产品推荐

