oracle sql,计算工作时间

时间:2016-01-20 00:04:06

标签: oracle oracle11g

我一直试图找到相关的东西但不能。 我有一个问题,我需要产生一些可用性百分比。我有一张桌子,其中包括正在发生的事件,我设法在它们发生的那天计算它们,但我发现了一个问题来计算一个季度或一年中的工作时间总数。

每周的每一天都有不同的重量。

基本上我的问题是:我可以不用那个月/年的所有日期制作一张表吗?

数据的一个例子:

ID     DATE       duration   Environment
1     23/10/15       25          a
2     15/01/15       50          b
3     01/01/15       43          c
8     05/06/14       7           b

它可以通过计算字段或只是一般查询来获取信息。

2 个答案:

答案 0 :(得分:0)

抱歉,我真的不明白这个问题,但如果你想用连接级别生成日期是一种简单的方法(你也可以使用模型子句或递归)我在这里做了10天但是你明白了。我把你的日期作为t1并生成了一个日期列表(t),然后做了一个左外连接将它们放在一起。

 WITH t AS
  (SELECT to_date('01-01-2015', 'mm-dd-yyyy') + level - 1 AS dt,
    NULL                                                  AS duration
  FROM dual
    CONNECT BY level < = 10
  ),
  t1 AS
  (
  SELECT to_date('10/01/15', 'dd-mm-yy') as dt, 50 as duration FROM dual
  UNION ALL
  SELECT to_date('01/01/15', 'dd-mm-yy'), 43 FROM dual
  UNION ALL
  SELECT to_date('06/01/15', 'dd-mm-yy'), 43 FROM dual
  )
SELECT t.dt,
  NVL(NVL(t1.duration, t.duration),0) duration
FROM t,
  t1
WHERE t.dt = t1.dt(+)
ORDER BY dt

结果

DT                     Duration
01-JAN-15               43
02-JAN-15               0
03-JAN-15               0
04-JAN-15               0
05-JAN-15               0
06-JAN-15               43
07-JAN-15               0
08-JAN-15               0
09-JAN-15               0
10-JAN-15               50

答案 1 :(得分:0)

这是我的意图,以及下面的完整答案。

echo "++++ working at : " `pwd`