我有一张my_table
表格
rowNumber number ...
1 23
2 14
3 15
4 25
5 19
6 21
7 19
8 37
9 31
...
1000 28
我想找到该列增加的连续序列的最大长度number
。对于此示例,它将是 3:
14, 15, 25
我的想法是为每个数字计算这样的长度:
rowNumber number ... length
1 23 1
2 14 1
3 15 2
4 25 3
5 19 1
6 21 2
7 19 1
8 37 2
9 31 1
...
然后取最大值。为了计算length
,我编写了以下使用递归的查询:
with enhanced_table as (select *
,1 length
from my_table
where rowNumber = 1
union all
(select b.*
,case when b.number > a.number
then a.length + 1
end new_column
from enhanced_table a, my_table b
where b.rowNumber = a.rowNumber + 1
)
select max(length)
from enhanced_table
所以,我试图从rowNumber = 1
递归开始并连续添加所有其他行。我得到了maximum recursion 100 has been exhausted before statement completion
错误。
我的问题是:我应该找到一种方法来增加服务器上允许的最大迭代次数(鉴于查询很简单,我认为运行 1000 次迭代不会有问题),还是找到另一种方法?
另外,100 次迭代的阈值是不是太低了?
谢谢!