SQL难点解决:集合及行号

  

SQL虽然有集合概念,但对于集合运算,特别是有序集合运算,提供的支持却很有限,经常要采用很费解的思路才能完成,计算效率也不佳,而集算器SPL   在方面则要直观许多,可以按自然思维习惯写出运算。这里对SQL和集算器SPL在集合运算和行号相关运算方面进行了对比。

1,,和集


<强>示例1:重叠部分不重复计数时求多个时间段包含的总天数


MySQL8:


递归t(开始、结束)(选择日期# 39;2010 - 01 - 07年& # 39;,日期# 39;2010 - 01 - 9 & # 39;


union all选择日期# 39;2010 - 01 - 15 & # 39;,日期# 39;2010 - 01 - 16 & # 39;


union all选择日期# 39;2010 - 01 - 07年& # 39;,日期# 39;2010 - 01 - 12 & # 39;


union all选择日期# 39;2010 - 01 - 08 - & # 39;,日期# 39;2010 - 01 - 11 & # 39;),


t1 (d)(选择开始,结束从t


union all选择d + 1,结束从t1 d


select count(不同d)从t1;


说明:此例先将各时间段转成时间段内所有日子对应的日期,然后再求不同日期的个数


,


集算器SPL:


 SQL难点解决:集合及行号”>,<br/> </p> <p> <br/> </p> <p> A3:对A2中的每一个时间段构造从开始到结束的日期序列</p> <p> <br/> </p> <p> A4:求A3中所有日期序列的和</p> <p> <br/> </p> <p> A5:求A4中不重复日期的个数</p> <p> <br/> </p> <p> <img src=SQL难点解决:集合及行号