如何在Redshift SQL中创建含1-52周的CTE(等效Python range(52))
在Redshift SQL中生成1-52周序列的实现方法
要生成对应Python range(1,53) 的1到52的连续序列,Redshift SQL有两种实用的实现方式:
方法1:使用generate_series函数(简洁高效)
Redshift支持generate_series直接生成连续数值序列,语法简单直观:
作为CTE使用
WITH weeks AS ( SELECT generate_series(1, 52) AS weeks ) SELECT * FROM weeks;
作为临时表使用
如果需要将序列持久化为临时表,可执行:
CREATE TEMP TABLE weeks AS SELECT generate_series(1, 52) AS weeks;
方法2:递归CTE(兼容性更强)
若你的Redshift环境对generate_series有使用限制,递归CTE是更通用的方案,通过自迭代生成序列:
WITH RECURSIVE weeks AS ( SELECT 1 AS weeks UNION ALL SELECT weeks + 1 FROM weeks WHERE weeks < 52 ) SELECT * FROM weeks;
以上两种方式都能生成和你Python代码中pd.DataFrame({'weeks':list(range(1,53))})完全一致的结果——包含1到52连续整数的单列数据集。
内容的提问来源于stack exchange,提问作者jbuddy_13
相关产品推荐
相关产品推荐

