首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

有个算法有关问题,麻烦大侠们帮忙处理一下

2012-04-21 
有个算法问题,麻烦大侠们帮忙处理一下有一张表TABLE,如下数据:字段NAME,TEST_DATE,START_TIME,STOP_TIMEAA

有个算法问题,麻烦大侠们帮忙处理一下
有一张表TABLE,如下数据:
字段 NAME , TEST_DATE , START_TIME , STOP_TIME
  AA 2011-3-28 2011-3-28 09:00:00 2011-3-28 10:00:00
  AA 2011-3-28 2011-3-28 12:00:00 2011-3-28 14:00:00  
  AA 2011-3-28 2011-3-28 13:00:00 2011-3-28 18:00:00  
  BB ...... ......
  BB ...... ......

要求:以NAME 和 TEST_DATE为分组;求AA中一天不重复START_TIME 和 STOP_TIME 时间和;
  如:第一条记录与第二天条记录中,有11点--12点时间差要 去掉;
  第三条记录有13--14点 在第二条记录中算过,这边要去掉只计14--18点这时间;
  反正在一天里面算出来时间不能超过24小时,算出来结果要除以24小时,算出利用率;

[解决办法]

SQL code
--表名ttSELECT NAME,       test_date,       SUM((stop_time - CASE             WHEN start_time < nvl(p_stoptime, start_time) THEN              p_stoptime             ELSE              start_time           END) * 24) / 24 * 100 "USE_RATIO(%)"  FROM (SELECT t.*,               lag(t.stop_time) over(PARTITION BY t.name, t.test_date ORDER BY t.start_time) p_stoptime          FROM tt t) GROUP BY NAME, test_date; 

热点排行