sql - 递归自加入 Redshift?
问题描述
这是针对红移表的,因此我无法使用 PSQL 中的 WITH RECURSIVE。
有一个如下所示的表:
id | current_leg | previous_leg
1 | AA |
2 | AB |
3 | CD |
4 | RF | AB
5 | AW |
6 | FV | AA
7 | ER | RF
我想递归地加入它本身,以基本上计算一个 current_leg 有多少 previous_legs,或者 current_leg 的深度。所以对于这个例子,输出看起来像:
id | current_leg |count_legs
1 | AA | 0
2 | AB | 0
3 | CD | 0
4 | RF | 1
5 | AW | 0
6 | FV | 1
7 | ER | 2
关于如何解决这个问题的任何想法都会很棒。已阅读有关递归 CTE 的问题,但不确定如何使其适用于我的用例。
谢谢!
解决方案
以下脚本为您当前的样本数据提供了预期的结果。您需要检查此脚本是否适用于更多场景的更多数据 -
SELECT A.id,A.current_leg,
CASE
WHEN A.previous_leg IS NULL THEN 0
ELSE
(
SELECT
CASE
WHEN B.current_leg IS NULL THEN 0
ELSE 1
END
+
CASE
WHEN B.previous_leg IS NULL THEN 0
ELSE 1
END
FROM your_table B
WHERE B.id <= A.id
AND B.current_leg = A.previous_leg
)
END Coun_legs
FROM your_table A
推荐阅读
- laravel - [Route: about] 缺少必需的参数
- angular - 未找到导出 MaterialModule
- python - python - 如何扩展按钮和标签以填充python tkinter中的x轴?
- javascript - 在 L.marker 中使用迭代器
- docker - Curl 命令失败 - 在 Windows 机器上运行的 Docker 容器内的 SSL 证书(退出代码 60)
- sql - 编写查询以查找特定模式中的所有视图,该模式使用雪花中不同模式中的两个表
- javascript - 尝试将两个rest api端点合并并加载在一起
- api - 错误 HTTP Post 请求未处理异常:类型“列表”
' 不是类型 'Map 的子类型 ' - android-studio - MLkit tflite 文件配置
- javascript - React js错误:无法读取未定义的属性'0'