首页 新闻 搜索 专区 学院

=====大神们,求一个SQL或存储过程,先谢谢啦=====

0
悬赏园豆:20 [待解决问题]
表:

---------------------------------------------------------

sd    |     starttime    |    endtime        | limittime 
2011  |2012-1-1 12:00:00 | 2012-1-3 13:10:11 |      10 


2011  |2012-1-1 12:00:00 | 2012-1-4 12:10:11 |      10 
2011  |2012-1-1 12:00:00 | 2012-1-5 8:90:11  |      10 


2012  |2012-1-10 8:00:00 | 2012-1-10 8:21:11 |      48 


2012  |2012-1-10 8:00:00 | 2012-1-10 12:21:11|      48 
2012  |2012-1-10 8:00:00 | 2012-1-11 8:21:11 |      48 
2012  |2012-1-10 8:00:00 | 2012-1-13 13:21:11|      48 
2012  |2012-1-10 8:00:00 | 2012-1-14 8:21:11 |      48 
2012  |2012-1-10 8:00:00 | 2012-1-16 0:21:11 |      48 
------------------------------------------------------- 
条件: 
1:sd相同的记录,endtime最小的那条记录,执行时间是总时间limittime长度的30%,超过就算超时。第一条,实际执行时间是:endtime-starttime 
例如:sd为2011的,endtime最小的是2012-1-3 13:10:11,它的实际执行时间是2012-1-3 13:10:11 -2011-1-1 12:00:00 =  49.x小时  > 3( limittime*30%)   -->超时 


2:sd相同的记录,如果endtime不是最小的记录,实际执行时间(endtime - 上一个endtime) > 执行时间(limittime - limittime *30%)/剩下个数  -->超时 
例如: 
sd为2012的, 
2012  |2012-1-10 8:00:00 | 2012-1-10 8:21:11 |      48  第一条,执行时间是48*30% 


2012  |2012-1-10 8:00:00 | 2012-1-10 12:21:11|      48  第二条 :实际执行时间 4小时 (2012-1-10 12:21:11 本次的endtime -  2012-1-10 8:21:11 上一个endtime)  < 6.7小时=(48-48*30%)/5  --不超时, 
如果实际执行时间大于6.7就算超时。 


求出所有超时的记录。

Oracle数据库....
Yang-Onion的主页 Yang-Onion | 初学一级 | 园豆:67
提问于:2012-12-05 11:26
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册