create or replace procedure PRC_SUM_MAIL_EXCHANGE_HAN(p_stat_date in date) is
/** 互换局邮件及时处理率
exec PRC_SUM_MAIL_EXCHANGE_HAN(to_date('20140501','yyyyMMdd'));
**/
stat_date varchar(10);
begin
stat_date := to_char(p_stat_date, 'yyyymmdd');
-- 删除当天统计过的数据
delete from SUM_MAIL_EXCHANGE_HANDLE_STAT where SUM_DATE = stat_date;
insert into SUM_MAIL_EXCHANGE_HANDLE_STAT
(sum_date,
dept_code,
need_rcv_cnt,
rcv_cnt,
open_cnt,
seal_cnt,
handle_cnt,
cnt_12,
cnt_24,
cnt_36,
cnt_48,
cnt_over_48
)
Select mi.clct_sum_date
,exchange_org
,count(*) --待处理数
,sum(decode(EXCHANGE_OPEN_TIME,null,0,1)) --实际接收数
,sum(decode(EXCHANGE_OPEN_TIME,null,0,1)) --开拆数
,sum(decode(EXCHANGE_SEAL_TIME,null,0,1)) --封发数
,sum(decode(EXCHANGE_SEAL_TIME, null,0,1)) --已处理数
,sum(decode(EXCHANGE_SEAL_TIME, null,0,case when EXCHANGE_SEAL_TIME-EXCHANGE_OPEN_TIME<=0.5 then 1 else 0 end))--12小时处理数
,sum(decode(EXCHANGE_SEAL_TIME, null,0,case when EXCHANGE_SEAL_TIME-EXCHANGE_OPEN_TIME<=1 then 1 else 0 end))--24小时处理数
,sum(decode(EXCHANGE_SEAL_TIME, null,0,case when EXCHANGE_SEAL_TIME-EXCHANGE_OPEN_TIME<=1.5 then 1 else 0 end))--36小时处理数
,sum(decode(EXCHANGE_SEAL_TIME, null,0,case when EXCHANGE_SEAL_TIME-EXCHANGE_OPEN_TIME<=2 then 1 else 0 end))--48小时处理数
,sum(decode(EXCHANGE_SEAL_TIME, null,0,case when EXCHANGE_SEAL_TIME-EXCHANGE_OPEN_TIME>2 then 1 else 0 end))--48小时以上处理数
from FACT_MAIL_INFO mi
where mi.clct_sum_date=stat_date and exchange_org is not null
group by mi.exchange_org,mi.clct_sum_date ;
commit;
/* 异常处理 */
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('Message: ' || SQLERRM);
dbms_output.put_line('Line No.: ' ||
dbms_utility.format_error_backtrace);
ROLLBACK;
end;
/** 互换局邮件及时处理率
exec PRC_SUM_MAIL_EXCHANGE_HAN(to_date('20140501','yyyyMMdd'));
**/
stat_date varchar(10);
begin
stat_date := to_char(p_stat_date, 'yyyymmdd');
-- 删除当天统计过的数据
delete from SUM_MAIL_EXCHANGE_HANDLE_STAT where SUM_DATE = stat_date;
insert into SUM_MAIL_EXCHANGE_HANDLE_STAT
(sum_date,
dept_code,
need_rcv_cnt,
rcv_cnt,
open_cnt,
seal_cnt,
handle_cnt,
cnt_12,
cnt_24,
cnt_36,
cnt_48,
cnt_over_48
)
Select mi.clct_sum_date
,exchange_org
,count(*) --待处理数
,sum(decode(EXCHANGE_OPEN_TIME,null,0,1)) --实际接收数
,sum(decode(EXCHANGE_OPEN_TIME,null,0,1)) --开拆数
,sum(decode(EXCHANGE_SEAL_TIME,null,0,1)) --封发数
,sum(decode(EXCHANGE_SEAL_TIME, null,0,1)) --已处理数
,sum(decode(EXCHANGE_SEAL_TIME, null,0,case when EXCHANGE_SEAL_TIME-EXCHANGE_OPEN_TIME<=0.5 then 1 else 0 end))--12小时处理数
,sum(decode(EXCHANGE_SEAL_TIME, null,0,case when EXCHANGE_SEAL_TIME-EXCHANGE_OPEN_TIME<=1 then 1 else 0 end))--24小时处理数
,sum(decode(EXCHANGE_SEAL_TIME, null,0,case when EXCHANGE_SEAL_TIME-EXCHANGE_OPEN_TIME<=1.5 then 1 else 0 end))--36小时处理数
,sum(decode(EXCHANGE_SEAL_TIME, null,0,case when EXCHANGE_SEAL_TIME-EXCHANGE_OPEN_TIME<=2 then 1 else 0 end))--48小时处理数
,sum(decode(EXCHANGE_SEAL_TIME, null,0,case when EXCHANGE_SEAL_TIME-EXCHANGE_OPEN_TIME>2 then 1 else 0 end))--48小时以上处理数
from FACT_MAIL_INFO mi
where mi.clct_sum_date=stat_date and exchange_org is not null
group by mi.exchange_org,mi.clct_sum_date ;
commit;
/* 异常处理 */
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('Message: ' || SQLERRM);
dbms_output.put_line('Line No.: ' ||
dbms_utility.format_error_backtrace);
ROLLBACK;
end;