提问者:小点点

teradata到mysql查询转换的问题


Teradata查询:-

   select  min(elapsed_sec) over (partition by job_name, parent_job_name order by elapsed_sec rows between 1 following and 1 following) - elapsed_sec as diff from xyz

Teradata查询的输出:-

elapsed_sec row_count row_no diff
0.000       207        143  1.000
1.000       207        144  0.000
1.000       207        145  0.000
1.000       207        146  0.000
1.000       207        147  4,555.000
4,556.000   207        148  1,250.000
5,806.000   207        149  2,038.000
7,844.000   207        150  73.000

注意:-diff是current_row和next_row
之间的差异。 第一行中的1-0=1,第二行中的1-1=0 MySQL5.6不支持此特性。 请帮助获得期望的结果


共1个答案

匿名用户

您的代码可以在MySQL的最新版本中工作。 所以,我的第一个建议是更新到MySQL8+。

在此之前,有一种方法是相关子查询:

select ( (select min(elapsed_sec) 
          from xyz xyz2
          where xyz2.job_name = xyz.job_name and
                xyz2.parent_job_name = xyz.parent_job_name and
                xyz2.elapsed_sec > xyz.elapsed_sec
         ) - elapsed_sec) as diff
from xyz;