【发布时间】:2015-03-03 22:04:44
【问题描述】:
从服务订单表 (SOS) 中,我想以累积的方式生成每月打开/关闭订单率 (%) 的报告。 SOS 表如下所示:
SO OPEN_DATE CLOSE_DATE
===================================
01 01-JAN-2014 03-FEB-2014
02 10-JAN-2014 15-JAN-2014
03 03-FEB-2014 10-MAR-2014
04 05-FEB-2014 13-MAR-2014
05 20-FEB-2014 04-APR-2014
06 01-MAR-2014 15-MAR-2014
所需的输出报告(ACCUMULATED RATE)应如下所示:
MONTH A_OPEN A_CLOSE RATE
==================================
JAN-2014 2 1 50%
FEB-2014 5 2 40%
MAR-2014 6 5 83%
APR-2014 6 6 100%
要获得累积打开列,我可以执行以下查询:
select
to_char("OPEN_DATE", 'MON-RRRR') MONTH,
count(*) OPEN,
sum(count(*)) over (order by to_char("OPEN_DATE", 'MON-RRRR')) "ACCUM_OPEN"
from "SOS"
group by to_char("OPEN_DATE", 'MON-RRRR')
order by to_char("OPEN_DATE", 'MON-RRRR')
产生以下输出:
MONTH OPEN ACCUM_OPEN
==============================
JAN-2014 2 2
FEB-2014 3 5
MAR-2014 1 6
APR-2014 0 6
为了获得累积封闭列,我可以执行以下查询:
select
to_char("CLOSE_DATE", 'MON-RRRR') MONTH,
count(*) CLOSED,
sum(count(*)) over (order by to_char("CLOSE_DATE", 'MON-RRRR')) "ACCUM_CLOSED"
from "SOS"
group by to_char("CLOSE_DATE", 'MON-RRRR')
order by to_char("CLOSE_DATE", 'MON-RRRR')
产生以下输出:
MONTH CLOSED ACCUM_CLOSED
================================
JAN-2014 1 1
FEB-2014 1 2
MAR-2014 3 5
APR-2014 1 6
我在同时管理两个不同列中的 OVER 查询时遇到了麻烦。
有什么想法吗?谢谢!
【问题讨论】: