我正在尝试在SQL中复制Python函数,但我无法根据表而不是循环/迭代来考虑它。
import itertools
rangeStart = 1
rangeEnd = 20
rangeStep = 2
outputSize = 3
lst = range(rangeStart, rangeEnd, rangeStep)
list = list(itertools.combinations(lst, outputSize))
print(len(list))
如何在SQL中复制上述python代码的输出,同时仍然允许输入(能够绑定到用户界面中的输入字段)?
具体而言,输出应该是排列,而不是组合。我基本上试图从GUI获得一些输入,它们输入范围(即0,20),值的类型(偶数,奇数或全部),以及输出中每个元组的长度。输出是一个排序的元组列表,因此(1,2,3)是好的,(2,3,1)或(1,3,2)不好。元组的值也从左到右增加,因此(2,4,6)是好的,但(6,4,2)不是。元组中的值也是唯一的,因此(4,4,6)并不好。
答案 0 :(得分:1)
使用递归cte从1到20生成奇数,然后生成一系列cross join
s。
with t(val) as (select 1 union all select val+2 from t where val<19)
select *
from t t1
cross join t t2
cross join t t3
where t1.val<t2.val and t2.val<t3.val
这会以行的形式生成您当前列表中的元组。