[Home] [Help]
PACKAGE BODY: APPS.BIX_EMAILS_SUMMARY_PKG
Source
1 PACKAGE BODY BIX_EMAILS_SUMMARY_PKG AS
2 /*$Header: bixemlsb.plb 120.6 2006/08/17 08:50:08 pubalasu noship $ */
3
4 g_request_id NUMBER;
5 g_program_appl_id NUMBER;
6 g_program_id NUMBER;
7 g_user_id NUMBER;
8 g_collect_start_date DATE;
9 g_collect_end_date DATE;
10 g_no_of_jobs NUMBER := 0;
11 g_commit_chunk_size NUMBER;
12 g_rows_ins_upd NUMBER;
13 g_sysdate DATE;
14 g_bix_schema VARCHAR2(30) := 'BIX';
15 g_debug_flag VARCHAR2(1) := 'N';
16
17 MAX_LOOP CONSTANT NUMBER := 180;
18
19 G_PARAM_MISMATCH EXCEPTION;
20 G_TIME_DIM_MISSING EXCEPTION;
21 G_CHILD_PROCESS_ISSUE EXCEPTION;
22
23 TYPE WorkerList is table of NUMBER index by binary_integer;
24 g_worker WorkerList;
25
26 TYPE g_media_id_tab IS TABLE OF jtf_ih_media_items.media_id%TYPE;
27 TYPE g_email_account_id_tab IS TABLE OF jtf_ih_media_items.source_id%TYPE;
28 TYPE g_email_classification_id_tab IS TABLE OF iem_route_classifications.route_classification_id%TYPE;
29 TYPE g_resource_id_tab IS TABLE OF bix_email_details_f.agent_id%TYPE;
30 TYPE g_start_date_time_tab IS TABLE OF jtf_ih_media_item_lc_segs.start_date_time%TYPE;
31 TYPE g_end_date_time_tab IS TABLE OF jtf_ih_media_item_lc_segs.end_date_time%TYPE;
32 TYPE g_media_start_date_time_tab IS TABLE OF jtf_ih_media_items.start_date_time%TYPE;
33
34 G_PROCESSING NUMBER;
35 G_REPLY NUMBER;
36 G_A_REPLY NUMBER;
37 G_FETCH NUMBER;
38 G_OPEN NUMBER;
39 G_TRANSFER NUMBER;
40 G_TRANSFERRED NUMBER;
41 G_ASSIGN_OPEN NUMBER;
42 G_ASSIGNED NUMBER;
43 G_A_ROUTED NUMBER;
44 G_A_UPDATED_SR NUMBER;
45 G_ESCALATED NUMBER;
46 G_DELETED NUMBER;
47 G_A_DELETED NUMBER;
48 G_A_REDIRECTED NUMBER;
49 G_RESOLVED NUMBER;
50 G_REROUTED_CLASS NUMBER;
51 G_REROUTED_ACCT NUMBER;
52 G_REQUEUED NUMBER;
53 G_COMPOSE NUMBER;
54
55
56
57
58 PROCEDURE Write_Log (p_msg IN VARCHAR2) IS
59 BEGIN
60
61
62 IF (g_debug_flag = 'Y') THEN
63 BIS_COLLECTION_UTILITIES.log(p_msg);
64 END IF;
65 EXCEPTION
66 WHEN OTHERS THEN
67 RAISE;
68 END Write_Log;
69
70 PROCEDURE truncate_table (p_table_name in varchar2) is
71
72 l_stmt varchar2(400);
73 BEGIN
74
75 write_log('Start of the procedure truncate_table at : ' || to_char(sysdate, 'mm/dd/yyyy hh24:mi:ss'));
76
77 l_stmt:='truncate table '||g_bix_schema||'.'|| p_table_name;
78 execute immediate l_stmt;
79
80 write_log('Table ' || p_table_name || ' has been truncated');
81
82 write_log('Finished procedure truncate_table at : ' || to_char(sysdate, 'mm/dd/yyyy hh24:mi:ss'));
83 EXCEPTION
84 WHEN OTHERS THEN
85 write_log('Error in truncate_table : Error : ' || sqlerrm);
86 RAISE;
87 END truncate_table;
88
89 PROCEDURE init IS
90
91 l_status VARCHAR2(30);
92 l_industry VARCHAR2(30);
93 BEGIN
94
95 IF (BIS_COLLECTION_UTILITIES.SETUP('BIX_EMAIL_DETAILS_F') = FALSE) THEN
96 RAISE_APPLICATION_ERROR(-20000, 'BIS_COLLECTION_UTILITIES.setup has failed');
97 END IF;
98
99 write_log('Start of the procedure init at : ' || to_char(sysdate, 'mm/dd/yyyy hh24:mi:ss'));
100
101 write_log('Initializing global variables');
102
103 g_request_id := FND_GLOBAL.CONC_REQUEST_ID();
104 g_program_appl_id := FND_GLOBAL.PROG_APPL_ID();
105 g_program_id := FND_GLOBAL.CONC_PROGRAM_ID();
106 g_user_id := FND_GLOBAL.USER_ID();
107 g_sysdate := SYSDATE;
108 g_commit_chunk_size := 10000;
109 g_rows_ins_upd := 0;
110
111 write_log('Getting Commit Size');
112
113 IF (FND_PROFILE.DEFINED('BIX_DM_DELETE_SIZE')) THEN
114 g_commit_chunk_size := TO_NUMBER(FND_PROFILE.VALUE('BIX_DM_DELETE_SIZE'));
115 END IF;
116
117 write_log('Commit SIZE : ' || g_commit_chunk_size);
118
119 write_log('Getting Debug Information');
120
121 IF (FND_PROFILE.DEFINED('BIX_DBI_DEBUG')) THEN
122 g_debug_flag := nvl(FND_PROFILE.VALUE('BIX_DBI_DEBUG'), 'N');
123 END IF;
124
125 write_log('Debug Flag : ' || g_debug_flag);
126
127 write_log('Getting schema information');
128
129 IF(FND_INSTALLATION.GET_APP_INFO('BIX', l_status, l_industry, g_bix_schema)) THEN
130 NULL;
131 END IF;
132
133 write_log('BIX Schema : ' || g_bix_schema);
134 write_log('Finished procedure init at : ' || to_char(sysdate, 'mm/dd/yyyy hh24:mi:ss'));
135
136 /* Truncate_Table('BIX_EMAIL_DETAILS_STG'); */
137
138 EXCEPTION
139 WHEN OTHERS THEN
140 write_log('Error in init : Error : ' || sqlerrm);
141 RAISE;
142 END init;
143
144
145 /*
146
147 This procedure inserts rows into BIX_WORKER_JOBS depening on no of workers and number of days the program need
148 to collect data.
149
150 */
151
152 PROCEDURE register_jobs IS
153
154 l_start_date_range DATE;
155 l_end_date_range DATE;
156 l_count NUMBER := 0;
157
158 BEGIN
159 write_log('Start of the procedure register_jobs at : ' || to_char(sysdate, 'mm/dd/yyyy hh24:mi:ss'));
160
161 /* No of jobs to be submitted = Number of 4 hours buckets for which we need to collect data */
162 SELECT ceil(g_collect_end_date - g_collect_start_date)
163 INTO l_count
164 FROM dual;
165
166 g_no_of_jobs := l_count;
167
168 write_log('Number of workers that need to be instantiated : ' || to_char(l_count));
169
170 Delete BIX_WORKER_JOBS WHERE OBJECT_NAME = 'BIX_EMAIL_DETAILS_F';
171
172 IF (l_count > 0) THEN
173 l_start_date_range := g_collect_start_date;
174
175 /* Register a job for each day of the collection date range */
176 FOR i IN 1..l_count
177 LOOP
178 IF (l_start_date_range > g_collect_end_date) THEN
179 EXIT;
180 END IF;
181
182 /* End date range is l_start_date_range + (4 hours - 1sec) */
183 l_end_date_range := trunc(l_start_date_range) + 86399/86400;
184
185 IF (l_end_date_range > g_collect_end_date) THEN
186 l_end_date_range := g_collect_end_date;
187 END IF;
188
189 INSERT INTO BIX_WORKER_JOBS(OBJECT_NAME
190 , START_DATE_RANGE
191 , END_DATE_RANGE
192 , WORKER_NUMBER
193 , STATUS)
194 VALUES (
195 'BIX_EMAIL_DETAILS_F'
196 , l_start_date_range
197 , l_end_date_range
198 , l_count
199 , 'UNASSIGNED');
200
201 l_start_date_range := l_end_date_range + 1/86400;
202 END LOOP;
203 END IF;
204
205 COMMIT;
206
207 write_log('Finished procedure register_jobs at : ' || to_char(sysdate, 'mm/dd/yyyy hh24:mi:ss'));
208 EXCEPTION
209 WHEN OTHERS THEN
210 write_log('Error in register_jobs : Error : ' || sqlerrm);
211 RAISE;
212 END REGISTER_JOBS;
213
214 /*
215
216 This function launches concurrent request which is child job collects data for one day.
217 */
218
219 FUNCTION launch_worker(p_worker_no in NUMBER) RETURN NUMBER IS
220
221 l_request_id NUMBER;
222
223 BEGIN
224
225 write_log('Start of the procedure launch_worker at : ' || to_char(sysdate, 'mm/dd/yyyy hh24:mi:ss'));
226
227 /* Submit the parallel concurrent request */
228 l_request_id := FND_REQUEST.SUBMIT_REQUEST('BIX',
229 'BIX_EMAIL_SUMMARY_SUBWORKER',
230 NULL,
231 NULL,
232 FALSE,
233 p_worker_no);
234
235 write_log('Request ID of the concurrent request launched : ' || to_char(l_request_id));
236
237 /* if the submission of the request fails , abort the program */
238 IF (l_request_id = 0) THEN
239 rollback;
240 write_log('Error in launching child workers');
241 RAISE G_CHILD_PROCESS_ISSUE;
242 END IF;
243
244 write_log('Finished procedure launch_worker at : ' || to_char(sysdate, 'mm/dd/yyyy hh24:mi:ss'));
245 RETURN l_request_id;
246
247 EXCEPTION
248 WHEN OTHERS THEN
249 write_log('Error in launch_worker : Error : ' || sqlerrm);
250 RAISE;
251 END LAUNCH_WORKER;
252
253 PROCEDURE get_curr_prev_depth(p_interaction_id IN NUMBER,
254 p_curr_depth OUT NOCOPY NUMBER,
255 p_prev_depth OUT NOCOPY NUMBER,
256 p_intr_thread OUT NOCOPY NUMBER)
257 IS
258 p_parent_depth integer;
259 BEGIN
260
261 write_log('Start of the procedure get_curr_prev_depth at : ' || to_char(sysdate, 'mm/dd/yyyy hh24:mi:ss'));
262
263 /* Get the depth of the interaction that is present in ICI summary table */
264 BEGIN
265
266 --
267 --If an entry is not there in this table then it means
268 --the interaction has not been collected yet - hence, the number
269 --of interaction thread can be hardcode to 1 since the query is based on
270 --the root interaction_id.
271 --If an entry is found in this table then the number of interaction threads
272 --is set to zero - because it means the data was already collected and
273 --the root interaction count for this root interaction has already been accounted for.
274 --
275 SELECT depth
276 INTO p_prev_depth
277 FROM bix_interactions_temp
278 WHERE interaction_id = p_interaction_id
279 FOR UPDATE OF depth;
280
281 p_intr_thread := 0;
282 EXCEPTION
283 WHEN NO_DATA_FOUND THEN
284
285 write_log('No Data found. Defaulting prev and curr depth');
286 p_prev_depth := 0;
287 p_intr_thread := 1;
288 WHEN OTHERS THEN
289 RAISE;
290 END;
291
292 write_log('The previous depth of the interaction : ' || to_char(p_interaction_id) || ' is ' || to_char(p_prev_depth));
293
294 BEGIN
295 /* Get the current depth of the interaction */
296 /* if the interaction is a new one with no child , then the depth is 1 */
297 SELECT /*+ ordered */
298 1
299 INTO p_curr_depth
300 FROM jtf_ih_activities actv,
301 jtf_ih_media_items imtm,
302 jtf_ih_media_item_lc_segs mseg,
303 jtf_ih_media_itm_lc_seg_tys mtys
304 WHERE actv.interaction_id = p_interaction_id
305 AND imtm.media_id = actv.media_id
306 AND mseg.media_id = imtm.media_id
307 AND mtys.milcs_type_id = mseg.milcs_type_id
308 AND mtys.milcs_code IN ('EMAIL_REPLY','EMAIL_AUTO_REPLY')
309 AND NOT EXISTS (
310 SELECT 1
311 FROM jtf_ih_interaction_inters inter
312 WHERE inter.interact_interaction_idrelates = actv.interaction_id )
313 AND rownum <= 1;
314 EXCEPTION
315 WHEN NO_DATA_FOUND THEN
316 BEGIN
317 /* Else get the depth from the table where the thread is maintained */
318
319 SELECT
320 --nvl(max(decode(milcs_code,'EMAIL_REPLY',depth,'EMAIL_AUTO_REPLY',depth,0)),0) depth
321 count(distinct media_id) depth
322 into p_curr_depth
323 FROM
324 (
325 SELECT inv2.interaction_id,
326 mseg.media_id media_id,
327 --first_Value(milcs_code) over (partition by mseg.media_id order by mseg.start_Date_time desc) milcs_code,
328 depth
329 FROM
330 (SELECT
331 interact_interaction_id interaction_id /* Child interaction*/,
332 level depth
333 FROM
334 jtf_ih_interaction_inters
335 START WITH interact_interaction_idrelates = p_interaction_id
336 CONNECT BY interact_interaction_idrelates = PRIOR interact_interaction_id
337 ORDER BY creation_date DESC) inv2, jtf_ih_activities actv,
338 jtf_ih_media_items mitm,
339 jtf_ih_media_item_lc_segs mseg,
340 jtf_ih_media_itm_lc_seg_tys mtys
341 WHERE actv.interaction_id = inv2.interaction_id
342 AND mitm.media_id = actv.media_id
343 AND mitm.media_id = mseg.media_id
344 AND mseg.milcs_type_id = mtys.milcs_type_id
345 AND mitm.direction='INBOUND' and mitm.media_item_type='EMAIL'
346 AND milcs_code in ('EMAIL_REPLY','EMAIL_AUTO_REPLY')
347 );
348 /* Check the parent..if it has reply/auto reply , increment the current depth by 1 */
349 p_parent_depth:=0;
350 BEGIN
351 SELECT /*+ ordered */
352 1
353 INTO p_parent_depth
354 FROM jtf_ih_activities actv,
355 jtf_ih_media_items imtm,
356 jtf_ih_media_item_lc_segs mseg,
357 jtf_ih_media_itm_lc_seg_tys mtys
358 WHERE actv.interaction_id = p_interaction_id
359 AND imtm.media_id = actv.media_id
360 AND mseg.media_id = imtm.media_id
361 AND mtys.milcs_type_id = mseg.milcs_type_id
362 AND mtys.milcs_code IN ('EMAIL_REPLY','EMAIL_AUTO_REPLY')
363 AND rownum <= 1;
364 EXCEPTION
365 WHEN NO_DATA_FOUND THEN
366 /* parent interaction does not have reply or auto reply and so...make parent depth as 0 */
367 p_parent_depth:=0;
368 END;
369 p_curr_depth:=p_curr_depth+p_parent_depth;
370
371
372 EXCEPTION
373 WHEN NO_DATA_FOUND THEN
374 p_curr_depth := 0;
375 WHEN OTHERS THEN
376 RAISE;
377 END;
378 WHEN OTHERS THEN
379 RAISE;
380 END;
381
385 EXCEPTION
382 write_log('The current depth of the interaction : ' || to_char(p_interaction_id) || ' is ' || to_char(p_curr_depth));
383 write_log('Finished procedure get_curr_prev_depth at : ' || to_char(sysdate, 'mm/dd/yyyy hh24:mi:ss'));
384
386 WHEN OTHERS THEN
387 write_log('Error in procedure get_curr_prev_depth : Error : ' || sqlerrm);
388 RAISE;
389 END get_curr_prev_depth;
390
391
392 /* This procedure collects One, two , three and Four done resolutiions. Email center keeps the threads of email
393 interactions in jtf_ih_interaction_inters table. If the customer reply back to the agent response then the entry will
394 be created in the above table with old and new interaction. This table stores both parent and child interaction id.
395
396 We can find the depth of thread from this table. If the table does not have entry in this
397 table for replied email, then the email interaction is one and done ,
398 if the depth is 1 then it is two and done and so on.
399
400 First the root interaction_id values and the depths are stored.
401 Using these, the corresponding dimensions are figured out. For these dimensions,
402 the time_ids are found out and updated using a sinle MERGE. We do not use a ROLLUP here.
403
404 */
405
406 PROCEDURE collect_resolutions IS
407
408 CURSOR all_root_interactions IS
409 SELECT DISTINCT interaction_id from
410 (
411 SELECT
412 incr.interaction_id
413 FROM jtf_ih_interactions incr,
414 jtf_ih_activities actv,
415 jtf_ih_media_items imtm
416 WHERE incr.start_date_time between g_collect_start_date and g_collect_end_date
417 AND actv.interaction_id = incr.interaction_id
418 AND imtm.media_id = actv.media_id
419 AND imtm.media_item_type = 'EMAIL'
420 AND imtm.direction = 'INBOUND'
421 AND NOT EXISTS (
422 SELECT 1
423 FROM jtf_ih_interaction_inters inter
424 WHERE
425 --?????? comment out???
426 inter.INTERACT_INTERACTION_IDRELATES = incr.interaction_id
427 OR
428 inter.interact_interaction_id = incr.interaction_id
429 )
430 AND NOT EXISTS (
431 SELECT 1
432 FROM jtf_ih_media_item_lc_segs mseg1,
433 jtf_ih_media_itm_lc_seg_tys mtys1
434 WHERE mseg1.media_id = imtm.media_id
435 AND mseg1.milcs_type_id = mtys1.milcs_type_id
436 AND mtys1.milcs_code IN ( 'EMAIL_REPLY','EMAIL_AUTO_REPLY') )
437 UNION ALL
438 SELECT
439 incr.interaction_id
440 FROM jtf_ih_interactions incr,
441 jtf_ih_activities actv,
442 jtf_ih_media_items imtm,
443 jtf_ih_media_item_lc_segs mseg,
444 jtf_ih_media_itm_lc_seg_tys mtys
445 WHERE actv.interaction_id = incr.interaction_id
446 AND imtm.media_id = actv.media_id
447 AND imtm.media_item_type = 'EMAIL'
448 AND imtm.direction = 'INBOUND'
449 AND mseg.media_id = imtm.media_id
450 AND mtys.milcs_type_id = mseg.milcs_type_id
451 AND mtys.milcs_code IN ( 'EMAIL_REPLY','EMAIL_AUTO_REPLY')
452 AND mseg.start_date_time BETWEEN g_collect_start_date AND g_collect_end_date
453 AND NOT EXISTS (
454 SELECT 1
455 FROM jtf_ih_interaction_inters inter
456 WHERE inter.INTERACT_INTERACTION_IDRELATES = incr.interaction_id
457 OR inter.interact_interaction_id = incr.interaction_id)
458 UNION ALL
459 SELECT interact_interaction_idrelates
460 FROM (
461 SELECT interact_interaction_idrelates
462 FROM jtf_ih_interaction_inters
463 START WITH interact_interaction_id IN
464 (SELECT
465 intr.interact_interaction_id
466 FROM jtf_ih_interaction_inters intr,
467 jtf_ih_activities actv,
468 jtf_ih_media_items imtm
469 WHERE intr.creation_date between g_collect_start_date and g_collect_end_date
470 AND actv.interaction_id = intr.interact_interaction_id
471 AND imtm.media_id = actv.media_id
472 AND imtm.media_item_type = 'EMAIL'
473 AND imtm.direction = 'INBOUND'
474 AND NOT EXISTS (
475 SELECT 1
476 FROM jtf_ih_interaction_inters inter
477 WHERE inter.INTERACT_INTERACTION_IDRELATES = intr.interact_interaction_id)
478 UNION
479 SELECT
480 intr.interact_interaction_id
481 FROM jtf_ih_interaction_inters intr,
482 jtf_ih_activities actv,
483 jtf_ih_media_items imtm,
484 jtf_ih_media_item_lc_segs mseg,
485 jtf_ih_media_itm_lc_seg_tys mtys
486 WHERE actv.interaction_id = intr.interact_interaction_id
487 AND imtm.media_id = actv.media_id
488 AND mseg.media_id = imtm.media_id
489 AND mtys.milcs_type_id = mseg.milcs_type_id
490 AND mtys.milcs_code IN ( 'EMAIL_REPLY','EMAIL_AUTO_REPLY')
491 AND mseg.start_date_time BETWEEN g_collect_start_date AND g_collect_end_date
492 AND NOT EXISTS (
493 SELECT 1
497 WHERE NOT EXISTS (
494 FROM jtf_ih_interaction_inters inter
495 WHERE inter.INTERACT_INTERACTION_IDRELATES = intr.interact_interaction_id))
496 CONNECT BY PRIOR interact_interaction_idrelates = interact_interaction_id ) inv2
498 SELECT 1 FROM jtf_ih_interaction_inters intr
499 WHERE intr.interact_interaction_id = inv2.interact_interaction_idrelates)
500 AND EXISTS (
501 SELECT 1
502 FROM jtf_ih_activities actv,
503 jtf_ih_media_items imtm
504 WHERE actv.interaction_id = inv2.interact_interaction_idrelates
505 AND actv.media_id = imtm.media_id
506 AND imtm.media_item_type = 'EMAIL'
507 AND imtm.direction = 'INBOUND')
508 )
509 ;
510
511 TYPE root_interaction_id_tab IS TABLE OF jtf_ih_interactions.interaction_id%TYPE;
512 TYPE agent_id_tab IS TABLE OF jtf_ih_interactions.resource_id%TYPE;
513 TYPE party_id_tab IS TABLE OF jtf_ih_interactions.party_id%TYPE;
514 TYPE start_date_time_tab IS TABLE OF jtf_ih_interactions.start_date_time%TYPE;
515 TYPE source_id_tab IS TABLE OF jtf_ih_media_items.source_id%TYPE;
516 TYPE route_classification_id_tab IS TABLE OF iem_route_classifications.route_classification_id%TYPE;
517 TYPE one_done_rsln_tab IS TABLE OF bix_email_details_f.one_rsln_in_period%TYPE;
518 TYPE two_done_rsln_tab IS TABLE OF bix_email_details_f.two_rsln_in_period%TYPE;
519 TYPE three_done_rsln_tab IS TABLE OF bix_email_details_f.three_rsln_in_period%TYPE;
520 TYPE four_done_rsln_tab IS TABLE OF bix_email_details_f.four_rsln_in_period%TYPE;
521 TYPE intr_thread_tab IS TABLE OF bix_email_details_f.interaction_threads_in_period%TYPE;
522 TYPE week_id_tab IS TABLE OF fii_time_day.week_id%TYPE;
523 TYPE ent_period_id_tab IS TABLE OF fii_time_day.ent_period_id%TYPE;
524 TYPE ent_qtr_id_tab IS TABLE OF fii_time_day.ent_qtr_id%TYPE;
525 TYPE ent_year_id_tab IS TABLE OF fii_time_day.ent_year_id%TYPE;
526 TYPE week_start_date_tab IS TABLE OF fii_time_day.week_start_date%TYPE;
527 TYPE ent_period_start_date_tab IS TABLE OF fii_time_day.ent_period_start_date%TYPE;
528 TYPE ent_qtr_start_date_tab IS TABLE OF fii_time_day.ent_qtr_start_date%TYPE;
529 TYPE ent_year_start_date_tab IS TABLE OF fii_time_day.ent_year_start_date%TYPE;
530 TYPE curr_depth_tab IS TABLE OF bix_email_details_f.one_rsln_in_period%TYPE;
531
532 l_root_interaction_id root_interaction_id_tab;
533 l_agent_id agent_id_tab;
534 l_party_id party_id_tab;
535 l_start_date_time start_date_time_tab;
536 l_email_account_id source_id_tab;
537 l_classification_id route_classification_id_tab;
538 l_one_done_rsln one_done_rsln_tab;
539 l_two_done_rsln two_done_rsln_tab;
540 l_three_done_rsln three_done_rsln_tab;
541 l_four_done_rsln four_done_rsln_tab;
542 l_intr_thread intr_thread_tab;
543 l_week_id week_id_tab;
544 l_ent_period_id ent_period_id_tab;
545 l_ent_qtr_id ent_qtr_id_tab;
546 l_ent_year_id ent_year_id_tab;
547 l_week_start_date week_start_date_tab;
548 l_ent_period_start_date ent_period_start_date_tab;
549 l_ent_qtr_start_date ent_qtr_start_date_tab;
550 l_ent_year_start_date ent_year_start_date_tab;
551 l_curr_depth curr_depth_tab;
552
553 l_prev_depth NUMBER;
554 l_no_of_records NUMBER;
555 l_ond_day NUMBER;
556 BEGIN
557
558 write_log('Start of the procedure collect_resolutions at : ' || to_char(sysdate, 'mm/dd/yyyy hh24:mi:ss'));
559
560 /* Initialize the variables */
561 l_agent_id := agent_id_tab();
562 l_party_id := party_id_tab();
563 l_start_date_time := start_date_time_tab();
564 l_email_account_id := source_id_tab();
565 l_classification_id := route_classification_id_tab();
566 l_one_done_rsln := one_done_rsln_tab();
567 l_two_done_rsln := two_done_rsln_tab();
568 l_three_done_rsln := three_done_rsln_tab();
569 l_four_done_rsln := four_done_rsln_tab();
570 l_intr_thread := intr_thread_tab();
571 l_week_id := week_id_tab();
572 l_ent_period_id := ent_period_id_tab();
573 l_ent_qtr_id := ent_qtr_id_tab();
574 l_ent_year_id := ent_year_id_tab();
575 l_week_start_date := week_start_date_tab();
576 l_ent_period_start_date := ent_period_start_date_tab();
577 l_ent_qtr_start_date := ent_qtr_start_date_tab();
578 l_ent_year_start_date := ent_year_start_date_tab();
579 l_curr_depth := curr_depth_tab();
580
581 OPEN all_root_interactions;
582
583 LOOP
584
585 /* fetch all leaf interactions that have been created in the collection date range */
586 /* or a reply has been given within the collection date range for the interaction */
587 FETCH all_root_interactions BULK COLLECT INTO
588 l_root_interaction_id
589 LIMIT g_commit_chunk_size;
590
591 IF (l_root_interaction_id.COUNT > 0) THEN
592
593 l_no_of_records := l_root_interaction_id.COUNT;
594
595 /* Make place for all the interactions */
596 l_agent_id.EXTEND(l_no_of_records);
597 l_party_id.EXTEND(l_no_of_records);
598 l_start_date_time.EXTEND(l_no_of_records);
599 l_email_account_id.EXTEND(l_no_of_records);
600 l_classification_id.EXTEND(l_no_of_records);
601 l_one_done_rsln.EXTEND(l_no_of_records);
602 l_two_done_rsln.EXTEND(l_no_of_records);
603 l_three_done_rsln.EXTEND(l_no_of_records);
604 l_four_done_rsln.EXTEND(l_no_of_records);
605 l_intr_thread.EXTEND(l_no_of_records);
606 l_week_id.EXTEND(l_no_of_records);
607 l_ent_period_id.EXTEND(l_no_of_records);
608 l_ent_qtr_id.EXTEND(l_no_of_records);
609 l_ent_year_id.EXTEND(l_no_of_records);
613 l_ent_year_start_date.EXTEND(l_no_of_records);
610 l_week_start_date.EXTEND(l_no_of_records);
611 l_ent_period_start_date.EXTEND(l_no_of_records);
612 l_ent_qtr_start_date.EXTEND(l_no_of_records);
614 l_curr_depth.EXTEND(l_no_of_records);
615
616 FOR i IN l_root_interaction_id.FIRST .. l_root_interaction_id.LAST
617 LOOP
618 /* For each interaction , get the associated dimensions */
619 SELECT
620 nvl(intr.resource_id, -1),
621 nvl(intr.party_id, -1),
622 trunc(intr.start_date_time),
623 nvl(mitm.source_id, -1),
624 nvl(irc.route_classification_id, -1)
625 INTO
626 l_agent_id(i),
627 l_party_id(i),
628 l_start_date_time(i),
629 l_email_account_id(i),
630 l_classification_id(i)
631 FROM
632 jtf_ih_interactions intr,
633 jtf_ih_activities actv,
634 jtf_ih_media_items mitm,
635 --
636 --Changes for R12
637 --
638 (
639 select name, max(route_classification_id) route_classification_id
640 from iem_route_classifications
641 group by name
642 ) irc
643 WHERE intr.interaction_id = l_root_interaction_id(i)
644 AND actv.interaction_id = intr.interaction_id
645 AND mitm.media_id = actv.media_id
646 AND mitm.direction = 'INBOUND'
647 AND mitm.media_item_type = 'EMAIL'
648 AND mitm.classification = irc.name(+)
649 AND rownum <= 1;
650
651 l_one_done_rsln(i) := 0;
652 l_two_done_rsln(i) := 0;
653 l_three_done_rsln(i) := 0;
654 l_four_done_rsln(i) := 0;
655 l_intr_thread(i) := 0;
656
657 /* Get the current and previous depth of the root interaction */
658 get_curr_prev_depth(l_root_interaction_id(i), l_curr_depth(i), l_prev_depth, l_intr_thread(i));
659
660
661 /* Get the time ids from time diemnsion corresponding to interaction start date time */
662 SELECT
663 week_id,
664 week_start_date,
665 ent_period_id,
666 ent_period_start_date,
667 ent_qtr_id,
668 ent_qtr_start_date,
669 ent_year_id,
670 ent_year_start_date
671 INTO
672 l_week_id(i),
673 l_week_start_date(i),
674 l_ent_period_id(i),
675 l_ent_period_start_date(i),
676 l_ent_qtr_id(i),
677 l_ent_qtr_start_date(i),
678 l_ent_year_id(i),
679 l_ent_year_start_date(i)
680 FROM
681 fii_time_day
682 WHERE report_date = trunc(l_start_date_time(i));
683
684
685 IF (l_curr_depth(i) = 1) THEN l_one_done_rsln(i) :=1;
686 ELSIF (l_curr_depth(i) = 2) THEN l_two_done_rsln(i) := 1;
687 ELSIF (l_curr_depth(i) = 3) THEN l_three_done_rsln(i) := 1;
688 ELSIF (l_curr_depth(i) = 4) THEN l_four_done_rsln(i) := 1;
689 END IF;
690
691 IF (l_prev_depth = 1) THEN l_one_done_rsln(i) := l_one_done_rsln(i) - 1;
692 ELSIF (l_prev_depth = 2) THEN l_two_done_rsln(i) := l_two_done_rsln(i) - 1;
693 ELSIF (l_prev_depth = 3) THEN l_three_done_rsln(i) := l_three_done_rsln(i) - 1;
694 ELSIF (l_prev_depth = 4) THEN l_four_done_rsln(i) := l_four_done_rsln(i) - 1;
695 END IF;
696
697
698
699 write_log('For this interaction one and done is'||to_char(l_one_done_rsln(i)));
700 --
701 --??Need to review this section of code to make sure for deletes
702 --If curr_depth = priro_depth which might happen if data is being re-collected then do not
703 --subtract the prior depth
704 /***************
705 IF (l_prev_depth = 1) AND l_curr_depth(i) <> 1 THEN l_one_done_rsln(i) := l_one_done_rsln(i) - 1;
706 ELSIF (l_prev_depth = 2) AND l_curr_depth(i) <> 2 THEN l_two_done_rsln(i) := l_two_done_rsln(i) - 1;
707 ELSIF (l_prev_depth = 3) AND l_curr_depth(i) <> 3 THEN l_three_done_rsln(i) := l_three_done_rsln(i) - 1;
708 ELSIF (l_prev_depth = 4) AND l_curr_depth(i) <> 4 THEN l_four_done_rsln(i) := l_four_done_rsln(i) - 1;
709 END IF;
710 ****************/
711
712 END LOOP;
713
714 /* Update the half-hour, day, week, month, quarter and year rows of ICI summary table */
715 /*
716 For period type id =1 (day level), we delete the records before arriving at this procedure,
717 so one and done becomes 0.. */
718
719 FORALL i IN l_root_interaction_id.FIRST .. l_root_interaction_id.LAST
720
721 MERGE INTO bix_email_details_f bed
722 USING (
723 SELECT
724 l_agent_id(i) agent_id
725 ,l_email_account_id(i) email_account_id
726 ,l_classification_id(i) email_classification_id
727 ,l_party_id(i) party_id
728 ,to_number(to_char(l_start_date_time(i), 'J')) time_id
729 ,1 period_type_id
730 ,trunc(l_start_date_time(i)) period_start_date
731 ,'00:00' period_start_time
732 ,l_one_done_rsln(i) one_rsln_in_period
733 ,l_two_done_rsln(i) two_rsln_in_period
734 ,l_three_done_rsln(i) three_rsln_in_period
735 ,l_four_done_rsln(i) four_rsln_in_period
736 ,l_intr_thread(i) interaction_threads_in_period
737 FROM DUAL
738 UNION ALL
739 SELECT
740 l_agent_id(i) agent_id
741 ,l_email_account_id(i) email_account_id
742 ,l_classification_id(i) email_classification_id
743 ,l_party_id(i) party_id
747 ,'00:00' period_start_time
744 ,l_week_id(i) time_id
745 ,16 period_type_id
746 ,l_week_start_date(i) period_start_date
748 ,l_one_done_rsln(i) one_rsln_in_period
749 ,l_two_done_rsln(i) two_rsln_in_period
750 ,l_three_done_rsln(i) three_rsln_in_period
751 ,l_four_done_rsln(i) four_rsln_in_period
752 ,l_intr_thread(i) interaction_threads_in_period
753 FROM DUAL
754 UNION ALL
755 SELECT
756 l_agent_id(i) agent_id
757 ,l_email_account_id(i) email_account_id
758 ,l_classification_id(i) email_classification_id
759 ,l_party_id(i) party_id
760 ,l_ent_period_id(i) time_id
761 ,32 period_type_id
762 ,l_ent_period_start_date(i) period_start_date
763 ,'00:00' period_start_time
764 ,l_one_done_rsln(i) one_rsln_in_period
765 ,l_two_done_rsln(i) two_rsln_in_period
766 ,l_three_done_rsln(i) three_rsln_in_period
767 ,l_four_done_rsln(i) four_rsln_in_period
768 ,l_intr_thread(i) interaction_threads_in_period
769 FROM DUAL
770 UNION ALL
771 SELECT
772 l_agent_id(i) agent_id
773 ,l_email_account_id(i) email_account_id
774 ,l_classification_id(i) email_classification_id
775 ,l_party_id(i) party_id
776 ,l_ent_qtr_id(i) time_id
777 ,64 period_type_id
778 ,l_ent_qtr_start_date(i) period_start_date
779 ,'00:00' period_start_time
780 ,l_one_done_rsln(i) one_rsln_in_period
781 ,l_two_done_rsln(i) two_rsln_in_period
782 ,l_three_done_rsln(i) three_rsln_in_period
783 ,l_four_done_rsln(i) four_rsln_in_period
784 ,l_intr_thread(i) interaction_threads_in_period
785 FROM DUAL
786 UNION ALL
787 SELECT
788 l_agent_id(i) agent_id
789 ,l_email_account_id(i) email_account_id
790 ,l_classification_id(i) email_classification_id
791 ,l_party_id(i) party_id
792 ,l_ent_year_id(i) time_id
793 ,128 period_type_id
794 ,l_ent_year_start_date(i) period_start_date
795 ,'00:00' period_start_time
796 ,l_one_done_rsln(i) one_rsln_in_period
797 ,l_two_done_rsln(i) two_rsln_in_period
798 ,l_three_done_rsln(i) three_rsln_in_period
799 ,l_four_done_rsln(i) four_rsln_in_period
800 ,l_intr_thread(i) interaction_threads_in_period
801 FROM DUAL) change
802 ON (
803 bed.agent_id = change.agent_id
804 AND bed.party_id = change.party_id
805 AND bed.email_account_id = change.email_account_id
806 AND bed.email_classification_id = change.email_classification_id
807 AND bed.time_id = change.time_id
808 AND bed.period_start_time = change.period_start_time
809 AND bed.period_start_date = change.period_start_date
810 AND bed.period_type_id = change.period_type_id
811 AND bed.outcome_id = -1 AND bed.result_id = -1 AND bed.reason_id = -1
812 )
813 WHEN MATCHED THEN
814 UPDATE
815 SET bed.one_rsln_in_period = decode(change.one_rsln_in_period, 0, bed.one_rsln_in_period,
816 decode(nvl(bed.one_rsln_in_period, 0) + change.one_rsln_in_period, 0, to_number(null),
817 nvl(bed.one_rsln_in_period, 0) + change.one_rsln_in_period))
818 ,bed.two_rsln_in_period = decode(change.two_rsln_in_period, 0, bed.two_rsln_in_period,
819 decode(nvl(bed.two_rsln_in_period, 0) + change.two_rsln_in_period, 0, to_number(null),
820 nvl(bed.two_rsln_in_period, 0) + change.two_rsln_in_period))
821 ,bed.three_rsln_in_period = decode(change.three_rsln_in_period, 0, bed.three_rsln_in_period,
822 decode(nvl(bed.three_rsln_in_period, 0) + change.three_rsln_in_period, 0, to_number(null),
823 nvl(bed.three_rsln_in_period, 0) + change.three_rsln_in_period))
824 ,bed.four_rsln_in_period = decode(change.four_rsln_in_period, 0, bed.four_rsln_in_period,
825 decode(nvl(bed.four_rsln_in_period, 0) + change.four_rsln_in_period, 0, to_number(null),
826 nvl(bed.four_rsln_in_period, 0) + change.four_rsln_in_period))
827 ,bed.interaction_threads_in_period = decode(change.interaction_threads_in_period, 0,
828 bed.interaction_threads_in_period, decode(nvl(bed.interaction_threads_in_period, 0)
829 + change.interaction_threads_in_period, 0, to_number(null),
830 nvl(bed.interaction_threads_in_period, 0) + change.interaction_threads_in_period))
831 ,bed.last_updated_by = g_user_id
832 ,bed.last_update_date = g_sysdate
833 WHEN NOT MATCHED THEN INSERT (
834 bed.agent_id
835 ,bed.party_id
836 ,bed.email_account_id
837 ,bed.email_classification_id
838 ,bed.time_id
839 ,bed.period_start_time
840 ,bed.period_start_date
841 ,bed.period_type_id
842 ,outcome_id
843 ,result_id
844 ,reason_id
845 ,bed.created_by
846 ,bed.creation_date
847 ,bed.last_updated_by
848 ,bed.last_update_date
849 ,bed.one_rsln_in_period
850 ,bed.two_rsln_in_period
851 ,bed.three_rsln_in_period
852 ,bed.four_rsln_in_period
853 ,bed.interaction_threads_in_period )
854 VALUES (
855 change.agent_id
856 ,change.party_id
857 ,change.email_account_id
858 ,change.email_classification_id
859 ,change.time_id
860 ,change.period_start_time
864 ,-1
861 ,change.period_start_date
862 ,change.period_type_id
863 ,-1
865 ,-1
866 ,g_user_id
867 ,g_sysdate
868 ,g_user_id
869 ,g_sysdate
870 ,decode(change.one_rsln_in_period, 0, to_number(null), change.one_rsln_in_period)
871 ,decode(change.two_rsln_in_period, 0, to_number(null), change.two_rsln_in_period)
872 ,decode(change.three_rsln_in_period, 0, to_number(null), change.three_rsln_in_period)
873 ,decode(change.four_rsln_in_period, 0, to_number(null), change.four_rsln_in_period)
874 ,decode(change.interaction_threads_in_period, 0, to_number(null), change.interaction_threads_in_period));
875
876
877 write_log('Total rows inserted/updated in bix_email_details_f for resolution : ' ||
878 to_char(l_root_interaction_id.COUNT * 6));
879 g_rows_ins_upd := g_rows_ins_upd + (l_root_interaction_id.COUNT * 6);
880
881 /* Update the bix_interactions_temp table to keep track of depth by interaction */
882 /* This table has an instead of insert trigger which updates/insert the row */
883 FORALL i IN l_root_interaction_id.FIRST .. l_root_interaction_id.LAST
884 MERGE INTO bix_interactions_temp bit
885 USING (
886 SELECT
887 l_root_interaction_id(i) interaction_id,
888 l_curr_depth(i) depth
889 FROM dual ) change
890 ON (bit.interaction_id = change.interaction_id)
891 WHEN MATCHED THEN
892 UPDATE
893 SET bit.depth = change.depth,
894 bit.last_updated_by = g_user_id,
895 bit.last_update_date = g_sysdate
896 WHEN NOT MATCHED THEN
897 INSERT (
898 bit.interaction_id,
899 bit.created_by,
900 bit.creation_date,
901 bit.last_updated_by,
902 bit.last_update_date,
903 bit.depth,
904 bit.request_id,
905 bit.program_application_id,
906 bit.program_id,
907 bit.program_update_date )
908 VALUES (
909 l_root_interaction_id(i),
910 g_user_id,
911 g_sysdate,
912 g_user_id,
913 g_sysdate,
914 l_curr_depth(i),
915 g_request_id,
916 g_program_appl_id,
917 g_program_id,
918 g_sysdate);
919
920 write_log('Total rows inserted/updated in bix_interactions_temp : ' || to_char(l_root_interaction_id.COUNT));
921 g_rows_ins_upd := g_rows_ins_upd + l_root_interaction_id.COUNT;
922
923 l_agent_id.TRIM(l_no_of_records);
924 l_party_id.TRIM(l_no_of_records);
925 l_start_date_time.TRIM(l_no_of_records);
926 l_email_account_id.TRIM(l_no_of_records);
927 l_classification_id.TRIM(l_no_of_records);
928 l_one_done_rsln.TRIM(l_no_of_records);
929 l_two_done_rsln.TRIM(l_no_of_records);
930 l_three_done_rsln.TRIM(l_no_of_records);
931 l_four_done_rsln.TRIM(l_no_of_records);
932 l_intr_thread.TRIM(l_no_of_records);
933 l_week_id.TRIM(l_no_of_records);
934 l_ent_period_id.TRIM(l_no_of_records);
935 l_ent_qtr_id.TRIM(l_no_of_records);
936 l_ent_year_id.TRIM(l_no_of_records);
937 l_week_start_date.TRIM(l_no_of_records);
938 l_ent_period_start_date.TRIM(l_no_of_records);
939 l_ent_qtr_start_date.TRIM(l_no_of_records);
940 l_ent_year_start_date.TRIM(l_no_of_records);
941 l_curr_depth.TRIM(l_no_of_records);
942
943 COMMIT;
944 END IF;
945
946 EXIT WHEN all_root_interactions%NOTFOUND;
947
948 END LOOP;
949
950 CLOSE all_root_interactions;
951
952 write_log('Finished procedure collect_resolutions at : ' || to_char(sysdate, 'mm/dd/yyyy hh24:mi:ss'));
953
954 EXCEPTION
955 WHEN OTHERS THEN
956 write_log('Error in procedure collect_resolutions : Error : ' || sqlerrm);
957 IF (all_root_interactions%ISOPEN) THEN
958 CLOSE all_root_interactions;
959 END IF;
960 RAISE;
961 END collect_resolutions;
962
963 PROCEDURE clean_up IS
964
965 l_total_rows_deleted NUMBER := 0;
966 l_rows_deleted NUMBER := 0;
967
968 BEGIN
969 write_log('Start of the procedure clean_up at ' || to_char(sysdate,'mm/dd/yyyy hh24:mi:ss'));
970
971 /* rollback the uncommited changes */
972 rollback;
973
974 l_total_rows_deleted := 0;
975
976 write_log('Deleting data from summary tables inserted from parallel workers');
977 /* Delete all the rows inserted from subworkers */
978 IF (g_worker.COUNT > 0) THEN
979 FOR i IN g_worker.FIRST .. g_worker.LAST
980 LOOP
981 LOOP
982 DELETE bix_email_details_f
983 WHERE request_id = g_worker(i)
984 AND rownum <= g_commit_chunk_size ;
985
986 l_rows_deleted := SQL%ROWCOUNT;
987 l_total_rows_deleted := l_total_rows_deleted + l_rows_deleted;
988
989 COMMIT;
990
991 IF (l_rows_deleted < g_commit_chunk_size) THEN
992 EXIT;
993 END IF;
994 END LOOP;
995 END LOOP;
996 END IF;
997
998 /* Delete the rows from eMail summary table inserted in the current run */
999 write_log('Deleting data from summary tables inserted through this main program');
1000 LOOP
1001 DELETE bix_email_details_f
1002 WHERE request_id = g_request_id
1006 l_total_rows_deleted := l_total_rows_deleted + l_rows_deleted;
1003 AND rownum <= g_commit_chunk_size ;
1004
1005 l_rows_deleted := SQL%ROWCOUNT;
1007
1008 COMMIT;
1009
1010 IF (l_rows_deleted < g_commit_chunk_size) THEN
1011 EXIT;
1012 END IF;
1013 END LOOP;
1014
1015 write_log('Deleting data from bix_interactions_temp');
1016 LOOP
1017 DELETE bix_interactions_temp
1018 WHERE request_id = g_request_id
1019 AND rownum <= g_commit_chunk_size ;
1020
1021 l_rows_deleted := SQL%ROWCOUNT;
1022 l_total_rows_deleted := l_total_rows_deleted + l_rows_deleted;
1023
1024 COMMIT;
1025
1026 IF (l_rows_deleted < g_commit_chunk_size) THEN
1027 EXIT;
1028 END IF;
1029 END LOOP;
1030
1031 write_log('Total number of rows deleted : ' || to_char(l_total_rows_deleted));
1032 write_log('Finished procedure clean_up at ' || to_char(sysdate,'mm/dd/yyyy hh24:mi:ss'));
1033
1034 EXCEPTION
1035 WHEN OTHERS THEN
1036 write_log('Error in cleaning up the tables : Error : ' || sqlerrm);
1037 RAISE;
1038 END CLEAN_UP;
1039
1040
1041 /*
1042 This procedure collects all the additive measures.
1043 In this procedure we also collect all the measures including queue, open measures.
1044 This is different from the way we do it in INITIAL LOAD.
1045 */
1046
1047
1048 PROCEDURE COLLECT_EMAILS IS
1049
1050 l_email_service_level NUMBER;
1051
1052 BEGIN
1053
1054 write_log('Start of the procedure collect_emails at : ' || to_char(sysdate, 'mm/dd/yyyy hh24:mi:ss'));
1055
1056 write_log('g_collect_start_date is ' || to_char(g_collect_start_date,'dd-mon-yyyy hh24:mi:ss'));
1057 write_log('g_collect_end_date is ' || to_char(g_collect_end_date,'dd-mon-yyyy hh24:mi:ss'));
1058
1059 /* Get the service level for the whole email center : if not defined then 1 day is the default */
1060 /* Multiply the profile by 60 * 60 to convert from hour to seconds */
1061 IF (FND_PROFILE.DEFINED('BIX_EMAIL_GOAL')) THEN
1062 l_email_service_level := TO_NUMBER(FND_PROFILE.VALUE('BIX_EMAIL_GOAL')) * 60 * 60;
1063 ELSE
1064 l_email_service_level := 24 * 60 * 60;
1065 END IF;
1066 write_log('The service level for the whole email center : ' || to_char(l_email_service_level) || ' seconds');
1067
1068 write_log('Merging additive measures into table bix_email_details_f');
1069
1070 --
1071 --Merge additive measures into the staging table - staging table introduced
1072 --to avoid issues with ROLLUP
1073 --
1074
1075
1076 MERGE INTO BIX_EMAIL_DETAILS_STG fact
1077 USING
1078 (
1079 SELECT
1080 inv2.email_account_id
1081 email_account_id,
1082 inv2.email_classification_id
1083 email_classification_id,
1084 inv2.agent_id
1085 agent_id,
1086 inv2.party_id
1087 party_id,
1088 inv2.time_id
1089 time_id,
1090 1 period_type_id,
1091 inv2.period_start_date
1092 period_start_date,
1093 inv2.period_start_time
1094 period_start_time,
1095 inv2.outcome_id
1096 outcome_id,
1097 inv2.result_id
1098 result_id,
1099 inv2.reason_id
1100 reason_id,
1101 g_user_id
1102 created_by,
1103 g_sysdate
1104 creation_date,
1105 g_user_id
1106 last_updated_by,
1107 g_sysdate
1108 last_update_date,
1109 0 emails_offered_in_period,
1110 decode(sum(inv2.emails_fetched_in_period), 0, to_number(null), sum(inv2.emails_fetched_in_period))
1111 emails_fetched_in_period,
1112 decode(sum(inv2.emails_replied_in_period), 0, to_number(null), sum(inv2.emails_replied_in_period))
1113 emails_replied_in_period,
1114 decode(sum(inv2.emails_rpld_by_goal_in_period), 0, to_number(null), sum(inv2.emails_rpld_by_goal_in_period))
1115 emails_rpld_by_goal_in_period,
1116 decode(sum(inv2.AGENT_EMAILS_RPLD_BY_GOAL), 0, to_number(null), sum(inv2.AGENT_EMAILS_RPLD_BY_GOAL))
1117 AGENT_EMAILS_RPLD_BY_GOAL,
1118 decode(sum(inv2.emails_deleted_in_period), 0, to_number(null), sum(inv2.emails_deleted_in_period))
1119 emails_deleted_in_period,
1120 decode(sum(inv2.emails_trnsfrd_out_in_period), 0, to_number(null), sum(inv2.emails_trnsfrd_out_in_period))
1121 emails_trnsfrd_out_in_period,
1122 decode(sum(inv2.emails_trnsfrd_in_in_period), 0, to_number(null), sum(inv2.emails_trnsfrd_in_in_period))
1123 emails_trnsfrd_in_in_period,
1124 decode(sum(inv2.emails_assigned_in_period), 0, to_number(null), sum(inv2.emails_assigned_in_period))
1125 emails_assigned_in_period,
1126 decode(sum(inv2.emails_auto_routed_in_period), 0, to_number(null), sum(inv2.emails_auto_routed_in_period))
1127 emails_auto_routed_in_period,
1128 decode(sum(inv2.emails_auto_uptd_sr_in_period), 0, to_number(null), sum(inv2.emails_auto_uptd_sr_in_period))
1129 emails_auto_uptd_sr_in_period,
1130 decode(round(sum(inv2.email_resp_time_in_period)), 0, to_number(null), round(sum(inv2.email_resp_time_in_period)))
1131 email_resp_time_in_period,
1132 decode(round(sum(inv2.agent_resp_time_in_period)), 0, to_number(null), round(sum(inv2.agent_resp_time_in_period)))
1133 agent_resp_time_in_period,
1134 0 sr_created_in_period,
1135 0 emails_rsl_and_trfd_in_period,
1136 decode(sum(EMAILS_AUTO_REPLIED_IN_PERIOD), 0, to_number(null), sum(EMAILS_AUTO_REPLIED_IN_PERIOD))
1137 EMAILS_AUTO_REPLIED_IN_PERIOD,
1138 decode(sum(EMAILS_AUTO_DELETED_IN_PERIOD), 0, to_number(null), sum(EMAILS_AUTO_DELETED_IN_PERIOD))
1139 EMAILS_AUTO_DELETED_IN_PERIOD,
1140 decode(sum(EMAILS_AUTO_RESOLVED_IN_PERIOD), 0, to_number(null), sum(EMAILS_AUTO_RESOLVED_IN_PERIOD))
1141 EMAILS_AUTO_RESOLVED_IN_PERIOD,
1142 0 emails_composed_in_period,
1143 0 emails_orr_count_in_period,
1144 0 accumulated_open_emails,
1145 0 accumulated_emails_in_queue,
1146 0 accumulated_emails_one_day,
1147 0 accumulated_emails_three_days,
1148 0 accumulated_emails_week,
1149 0 accumulated_emails_week_plus,
1150 0 LEADS_CREATED_IN_PERIOD,
1151 decode(sum(EMAILS_REROUTED_IN_PERIOD), 0, to_number(null), sum(EMAILS_REROUTED_IN_PERIOD))
1152 EMAILS_REROUTED_IN_PERIOD,
1153 g_request_id
1154 request_id,
1155 g_program_appl_id
1156 program_application_id,
1157 g_program_id
1158 program_id,
1159 g_sysdate
1160 program_update_date
1161 FROM
1162 (
1163 /* Query 1 */
1164 SELECT
1165 EMAIL_ACCOUNT_ID,
1166 EMAIL_CLASSIFICATION_ID,
1167 AGENT_ID,
1168 PARTY_ID,
1169 PERIOD_START_DATE,
1170 TIME_ID,
1171 '00:00' PERIOD_START_TIME,
1172 -1 OUTCOME_ID,
1173 -1 RESULT_ID,
1174 -1 REASON_ID,
1175 0 EMAILS_OFFERED_IN_PERIOD,
1176 sum(EMAILS_FETCHED_IN_PERIOD) EMAILS_FETCHED_IN_PERIOD,
1177 sum(EMAILS_REPLIED_IN_PERIOD) EMAILS_REPLIED_IN_PERIOD,
1178 sum(AGENT_RESP_TIME_IN_PERIOD) AGENT_RESP_TIME_IN_PERIOD,
1179 sum(EMAILS_RPLD_BY_GOAL_IN_PERIOD) EMAILS_RPLD_BY_GOAL_IN_PERIOD,
1180 sum(AGENT_EMAILS_RPLD_BY_GOAL) AGENT_EMAILS_RPLD_BY_GOAL,
1181 sum(EMAILS_TRNSFRD_OUT_IN_PERIOD) EMAILS_TRNSFRD_OUT_IN_PERIOD,
1182 sum(EMAILS_TRNSFRD_IN_IN_PERIOD) EMAILS_TRNSFRD_IN_IN_PERIOD,
1183 sum(EMAILS_ASSIGNED_IN_PERIOD) EMAILS_ASSIGNED_IN_PERIOD,
1184 sum(EMAILS_AUTO_ROUTED_IN_PERIOD) EMAILS_AUTO_ROUTED_IN_PERIOD,
1185 sum(EMAILS_AUTO_UPTD_SR_IN_PERIOD) EMAILS_AUTO_UPTD_SR_IN_PERIOD,
1186 sum(EMAILS_DELETED_IN_PERIOD) EMAILS_DELETED_IN_PERIOD,
1187 sum(EMAIL_RESP_TIME_IN_PERIOD) EMAIL_RESP_TIME_IN_PERIOD,
1188 0 SR_CREATED_IN_PERIOD,
1189 0 EMAILS_RSL_AND_TRFD_IN_PERIOD,
1190 sum(EMAILS_AUTO_REPLIED_IN_PERIOD) EMAILS_AUTO_REPLIED_IN_PERIOD,
1191 sum(EMAILS_AUTO_DELETED_IN_PERIOD) EMAILS_AUTO_DELETED_IN_PERIOD,
1192 sum(EMAILS_AUTO_RESOLVED_IN_PERIOD) EMAILS_AUTO_RESOLVED_IN_PERIOD,
1193 0 emails_composed_in_period,
1194 0 emails_orr_count_in_period,
1198 0 accumulated_emails_three_days,
1195 0 accumulated_open_emails,
1196 0 accumulated_emails_in_queue,
1197 0 accumulated_emails_one_day,
1199 0 accumulated_emails_week,
1200 0 accumulated_emails_week_plus,
1201 sum(EMAILS_REROUTED_IN_PERIOD) EMAILS_REROUTED_IN_PERIOD,
1202 0 LEADS_CREATED_IN_PERIOD
1203 FROM
1204 (
1205 SELECT /*+ index (mseg jtf_ih_media_item_lc_segs_n3) use_nl(mseg mitm) */
1206 nvl(mitm.source_id, -1) EMAIL_ACCOUNT_ID,
1207 nvl(irc.route_classification_id, -1) EMAIL_CLASSIFICATION_ID,
1208 nvl(mseg.resource_id, -1) AGENT_ID,
1209 nvl(( SELECT
1210 distinct first_value(intr.party_id) over(order by actv.interaction_id desc) party_id
1211 FROM
1212 jtf_ih_activities actv,
1213 jtf_ih_interactions intr
1214 WHERE
1215 mitm.media_id = actv.media_id
1216 AND actv.interaction_id = intr.interaction_id
1217 ), -1) PARTY_ID,
1218 trunc(mseg.start_date_time) PERIOD_START_DATE,
1219 to_number(to_char(mseg.start_date_time, 'J')) TIME_ID,
1220 decode(mtyp.milcs_code,'EMAIL_FETCH',1) EMAILS_FETCHED_IN_PERIOD,
1221 decode(mtyp.milcs_code,'EMAIL_REPLY',1) EMAILS_REPLIED_IN_PERIOD,
1222 decode(mtyp.milcs_code,'EMAIL_REPLY', (mseg.start_date_time -
1223 (
1224 SELECT MAX(mseg2.start_date_time) start_date_time
1225 FROM
1226 jtf_ih_media_item_lc_segs mseg2,
1227 jtf_ih_media_itm_lc_seg_tys mtyp2
1228 WHERE mseg.media_id = mseg2.media_id
1229 AND mseg2.milcs_type_id = mtyp2.milcs_type_id
1230 AND mtyp2.milcs_code IN ('EMAIL_FETCH','EMAIL_TRANSFER', 'EMAIL_ASSIGN_OPEN', 'EMAIL_AUTO_ROUTED', 'EMAIL_ASSIGNED')
1231 ) ) * 24 * 60 * 60) AGENT_RESP_TIME_IN_PERIOD,
1232 decode(mtyp.milcs_code,'EMAIL_REPLY',
1233 decode(sign(l_email_service_level - (mseg.start_date_time - mitm.start_date_time) * 24 * 60 * 60),-1,0,1)
1234 , 'EMAIL_AUTO_REPLY',
1235 decode(sign(l_email_service_level - (mseg.start_date_time - mitm.start_date_time) * 24 * 60 * 60),-1,0,1) )
1236 EMAILS_RPLD_BY_GOAL_IN_PERIOD,
1237 decode(mtyp.milcs_code,'EMAIL_REPLY',
1238 decode(sign(l_email_service_level - (mseg.start_date_time - mitm.start_date_time) * 24 * 60 * 60),-1,0,1)
1239 ) AGENT_EMAILS_RPLD_BY_GOAL,
1240 decode(mtyp.milcs_code,'EMAIL_TRANSFERRED',1,'EMAIL_ESCALATED',1) EMAILS_TRNSFRD_OUT_IN_PERIOD,
1241 decode(mtyp.milcs_code,'EMAIL_TRANSFER',1) EMAILS_TRNSFRD_IN_IN_PERIOD,
1242 decode(mtyp.milcs_code,'EMAIL_ASSIGNED',1) EMAILS_ASSIGNED_IN_PERIOD,
1243 decode(mtyp.milcs_code,'EMAIL_AUTO_ROUTED',1) EMAILS_AUTO_ROUTED_IN_PERIOD,
1244 decode(mtyp.milcs_code,'EMAIL_AUTO_UPDATED_SR',1)
1245 EMAILS_AUTO_UPTD_SR_IN_PERIOD,
1246 decode(mtyp.milcs_code,'EMAIL_DELETED',1) EMAILS_DELETED_IN_PERIOD,
1247 decode(mtyp.milcs_code,'EMAIL_REPLY', (mseg.start_date_time - mitm.start_date_time) * 24 * 60 * 60,
1248 'EMAIL_AUTO_REPLY',(mseg.start_date_time - mitm.start_date_time) * 24 * 60 * 60) EMAIL_RESP_TIME_IN_PERIOD,
1249 decode(mtyp.milcs_code,'EMAIL_AUTO_REPLY',1) EMAILS_AUTO_REPLIED_IN_PERIOD,
1250 decode(mtyp.milcs_code,'EMAIL_AUTO_DELETED',1) EMAILS_AUTO_DELETED_IN_PERIOD,
1251 decode(mtyp.milcs_code,'EMAIL_RESOLVED',1) EMAILS_AUTO_RESOLVED_IN_PERIOD,
1252 decode(mtyp.milcs_code,'EMAIL_REROUTED_DIFF_CLASS',1,'EMAIL_REROUTED_DIFF_ACCT',1,'EMAIL_REQUEUED',1) EMAILS_REROUTED_IN_PERIOD
1253 FROM
1254 JTF_IH_MEDIA_ITEMS mitm,
1255 JTF_IH_MEDIA_ITEM_LC_SEGS mseg,
1256 JTF_IH_MEDIA_ITM_LC_SEG_TYS mtyp,
1257 (
1258 select name, max(route_classification_id) route_classification_id
1259 from iem_route_classifications
1260 group by name
1261 ) irc
1262 WHERE mitm.MEDIA_ITEM_TYPE = 'EMAIL'
1263 AND mitm.classification = irc.name(+)
1264 AND mitm.direction = 'INBOUND'
1265 AND mitm.MEDIA_ID = mseg.MEDIA_ID
1266 AND mseg.MILCS_TYPE_ID = mtyp.MILCS_TYPE_ID
1267 AND mseg.START_DATE_TIME BETWEEN g_collect_start_date and g_collect_end_date
1268 )
1269 GROUP BY
1270 EMAIL_ACCOUNT_ID,
1271 EMAIL_CLASSIFICATION_ID,
1272 AGENT_ID,
1273 PARTY_ID,
1274 PERIOD_START_DATE,
1275 TIME_ID
1276 ) inv2
1277 GROUP BY
1278 inv2.email_account_id,
1279 inv2.email_classification_id,
1280 inv2.agent_id,
1281 inv2.party_id,
1282 inv2.time_id,
1283 inv2.period_start_date,
1284 inv2.period_start_time,
1285 inv2.outcome_id,
1286 inv2.result_id,
1287 inv2.reason_id
1288 ) change
1289 ON (
1290 fact.email_account_id = change.email_account_id
1291 AND fact.email_classification_id = change.email_classification_id
1292 AND fact.agent_id = change.agent_id
1293 AND fact.party_id = change.party_id
1294 AND fact.time_id = change.time_id
1295 AND fact.period_type_id = change.period_type_id
1296 AND fact.period_start_date = change.period_start_date
1297 AND fact.period_start_time = change.period_start_time
1298 AND fact.outcome_id = change.outcome_id
1299 AND fact.result_id = change.result_id
1300 AND fact.reason_id = change.reason_id )
1301 WHEN MATCHED THEN
1302 UPDATE
1303 SET fact.emails_offered_in_period = DECODE(nvl(fact.emails_offered_in_period,0) + nvl(change.emails_offered_in_period,0),
1304 0, NULL, nvl(fact.emails_offered_in_period,0) + nvl(change.emails_offered_in_period,0))
1305 ,fact.emails_fetched_in_period = DECODE(nvl(fact.emails_fetched_in_period,0) + nvl(change.emails_fetched_in_period,0),
1306 0, NULL, nvl(fact.emails_fetched_in_period,0) + nvl(change.emails_fetched_in_period,0))
1307 ,fact.emails_replied_in_period = DECODE(nvl(fact.emails_replied_in_period,0) + nvl(change.emails_replied_in_period,0),
1308 0, NULL, nvl(fact.emails_replied_in_period,0) + nvl(change.emails_replied_in_period,0))
1312 0), 0, NULL, nvl(fact.AGENT_EMAILS_RPLD_BY_GOAL,0) + nvl(change.AGENT_EMAILS_RPLD_BY_GOAL,0))
1309 ,fact.emails_rpld_by_goal_in_period = DECODE(nvl(fact.emails_rpld_by_goal_in_period,0) + nvl(change.emails_rpld_by_goal_in_period,
1310 0), 0, NULL, nvl(fact.emails_rpld_by_goal_in_period,0) + nvl(change.emails_rpld_by_goal_in_period,0))
1311 ,fact.AGENT_EMAILS_RPLD_BY_GOAL = DECODE(nvl(fact.AGENT_EMAILS_RPLD_BY_GOAL,0) + nvl(change.AGENT_EMAILS_RPLD_BY_GOAL,
1313 ,fact.emails_deleted_in_period = DECODE(nvl(fact.emails_deleted_in_period,0) + nvl(change.emails_deleted_in_period,0), 0, NULL,
1314 nvl(fact.emails_deleted_in_period,0) + nvl(change.emails_deleted_in_period,0))
1315 ,fact.emails_trnsfrd_out_in_period = DECODE(nvl(fact.emails_trnsfrd_out_in_period,0) + nvl(change.emails_trnsfrd_out_in_period,0),
1316 0, NULL, nvl(fact.emails_trnsfrd_out_in_period,0) + nvl(change.emails_trnsfrd_out_in_period,0))
1317 ,fact.emails_trnsfrd_in_in_period = DECODE(nvl(fact.emails_trnsfrd_in_in_period,0) + nvl(change.emails_trnsfrd_in_in_period,0),
1318 0, NULL, nvl(fact.emails_trnsfrd_in_in_period,0) + nvl(change.emails_trnsfrd_in_in_period,0))
1319 ,fact.emails_assigned_in_period = DECODE(nvl(fact.emails_assigned_in_period,0) + nvl(change.emails_assigned_in_period,0),
1320 0, NULL, nvl(fact.emails_assigned_in_period,0) + nvl(change.emails_assigned_in_period,0))
1321 ,fact.emails_auto_routed_in_period = DECODE(nvl(fact.emails_auto_routed_in_period,0) + nvl(change.emails_auto_routed_in_period,0),
1322 0, NULL, nvl(fact.emails_auto_routed_in_period,0) + nvl(change.emails_auto_routed_in_period,0))
1323 ,fact.emails_auto_uptd_sr_in_period = DECODE(nvl(fact.emails_auto_uptd_sr_in_period,0) + nvl(change.emails_auto_uptd_sr_in_period,0),
1324 0, NULL, nvl(fact.emails_auto_uptd_sr_in_period,0) + nvl(change.emails_auto_uptd_sr_in_period,0))
1325 ,fact.email_resp_time_in_period = DECODE(nvl(fact.email_resp_time_in_period,0) + nvl(change.email_resp_time_in_period,0),
1326 0, NULL, nvl(fact.email_resp_time_in_period,0) + nvl(change.email_resp_time_in_period,0))
1327 ,fact.agent_resp_time_in_period = DECODE(nvl(fact.agent_resp_time_in_period,0) + nvl(change.agent_resp_time_in_period,0),
1328 0, NULL, nvl(fact.agent_resp_time_in_period,0) + nvl(change.agent_resp_time_in_period,0))
1329 ,fact.sr_created_in_period = DECODE(nvl(fact.sr_created_in_period,0) + nvl(change.sr_created_in_period,0),
1330 0, NULL, nvl(fact.sr_created_in_period,0) + nvl(change.sr_created_in_period,0))
1331 ,fact.emails_rsl_and_trfd_in_period = DECODE(nvl(fact.emails_rsl_and_trfd_in_period,0) + nvl(change.emails_rsl_and_trfd_in_period,0),
1332 0, NULL, nvl(fact.emails_rsl_and_trfd_in_period,0) + nvl(change.emails_rsl_and_trfd_in_period,0))
1333 ,fact.emails_orr_count_in_period = DECODE(nvl(fact.emails_orr_count_in_period,0) + nvl(change.emails_orr_count_in_period,0),
1334 0, NULL, nvl(fact.emails_orr_count_in_period,0) + nvl(change.emails_orr_count_in_period,0))
1335 ,fact.EMAILS_AUTO_REPLIED_IN_PERIOD = DECODE(nvl(fact.EMAILS_AUTO_REPLIED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_REPLIED_IN_PERIOD,0),
1336 0, NULL, nvl(fact.EMAILS_AUTO_REPLIED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_REPLIED_IN_PERIOD,0))
1337 ,fact.EMAILS_AUTO_DELETED_IN_PERIOD = DECODE(nvl(fact.EMAILS_AUTO_DELETED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_DELETED_IN_PERIOD,0),
1338 0, NULL, nvl(fact.EMAILS_AUTO_DELETED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_DELETED_IN_PERIOD,0))
1339 ,fact.EMAILS_AUTO_RESOLVED_IN_PERIOD = DECODE(nvl(fact.EMAILS_AUTO_RESOLVED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_RESOLVED_IN_PERIOD,
1340 0), 0, NULL, nvl(fact.EMAILS_AUTO_RESOLVED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_RESOLVED_IN_PERIOD,0))
1341 ,fact.emails_composed_in_period = DECODE(nvl(fact.emails_composed_in_period,0) + nvl(change.emails_composed_in_period,0),
1342 0, NULL, nvl(fact.emails_composed_in_period,0) + nvl(change.emails_composed_in_period,0))
1343 --
1344 --Note that accumulated measures are not added together - they are replaced by the new
1345 --calculated value as they are not additive.
1346 --
1347 ,fact.accumulated_open_emails = decode(change.accumulated_open_emails,0,to_number(NULL),change.accumulated_open_emails)
1348 ,fact.accumulated_emails_in_queue = decode(change.accumulated_emails_in_queue,0,to_number(NULL),change.accumulated_emails_in_queue)
1349 ,fact.accumulated_emails_one_day = decode(change.accumulated_emails_one_day,0,to_number(NULL),change.accumulated_emails_one_day)
1350 ,fact.accumulated_emails_three_days = decode(change.accumulated_emails_three_days,0,to_number(NULL),change.accumulated_emails_three_days)
1351 ,fact.accumulated_emails_week = decode(change.accumulated_emails_week,0,to_number(NULL),change.accumulated_emails_week)
1352 ,fact.accumulated_emails_week_plus = decode(change.accumulated_emails_week_plus,0,to_number(NULL),change.accumulated_emails_week_plus)
1353 ,fact.last_updated_by = change.last_updated_by
1354 ,fact.last_update_date = change.last_update_date
1355 ,fact.emails_rerouted_in_period = DECODE(nvl(fact.emails_rerouted_in_period,0) + nvl(change.emails_rerouted_in_period,0),
1356 0, NULL, nvl(fact.emails_rerouted_in_period,0) + nvl(change.emails_rerouted_in_period,0))
1357 ,fact.leads_created_in_period = DECODE(nvl(fact.leads_created_in_period,0) + nvl(change.leads_created_in_period,0),
1358 0, NULL, nvl(fact.leads_created_in_period,0) + nvl(change.leads_created_in_period,0))
1359 WHEN NOT MATCHED THEN
1360 INSERT (
1361 fact.email_account_id,
1362 fact.email_classification_id,
1363 fact.agent_id,
1364 fact.party_id,
1365 fact.time_id,
1366 fact.period_type_id,
1367 fact.period_start_date,
1368 fact.period_start_time,
1369 fact.outcome_id,
1370 fact.result_id,
1371 fact.reason_id,
1372 fact.created_by,
1376 fact.emails_offered_in_period,
1373 fact.creation_date,
1374 fact.last_updated_by,
1375 fact.last_update_date,
1377 fact.emails_fetched_in_period,
1378 fact.emails_replied_in_period,
1379 fact.emails_rpld_by_goal_in_period,
1380 fact.AGENT_EMAILS_RPLD_BY_GOAL,
1381 fact.emails_deleted_in_period,
1382 fact.emails_trnsfrd_out_in_period,
1383 fact.emails_trnsfrd_in_in_period,
1384 fact.emails_assigned_in_period,
1385 fact.emails_auto_routed_in_period,
1386 fact.emails_auto_uptd_sr_in_period,
1387 fact.email_resp_time_in_period,
1388 fact.agent_resp_time_in_period,
1389 fact.sr_created_in_period,
1390 fact.emails_rsl_and_trfd_in_period,
1391 fact.emails_orr_count_in_period,
1392 fact.EMAILS_AUTO_REPLIED_IN_PERIOD,
1393 fact.EMAILS_AUTO_DELETED_IN_PERIOD,
1394 fact.EMAILS_AUTO_RESOLVED_IN_PERIOD,
1395 fact.emails_composed_in_period,
1396 fact.accumulated_open_emails,
1397 fact.accumulated_emails_in_queue,
1398 fact.accumulated_emails_one_day,
1399 fact.accumulated_emails_three_days,
1400 fact.accumulated_emails_week,
1401 fact.accumulated_emails_week_plus,
1402 fact.request_id,
1403 fact.program_application_id,
1404 fact.program_id,
1405 fact.program_update_date,
1406 fact.emails_rerouted_in_period,
1407 fact.leads_created_in_period )
1408 VALUES (
1409 change.email_account_id,
1410 change.email_classification_id,
1411 change.agent_id,
1412 change.party_id,
1413 change.time_id,
1414 change.period_type_id,
1415 change.period_start_date,
1416 change.period_start_time,
1417 change.outcome_id,
1418 change.result_id,
1419 change.reason_id,
1420 change.created_by,
1421 change.creation_date,
1422 change.last_updated_by,
1423 change.last_update_date,
1424 decode(change.emails_offered_in_period,0,to_number(null), change.emails_offered_in_period),
1425 decode(change.emails_fetched_in_period, 0,to_number(null),change.emails_fetched_in_period),
1426 decode(change.emails_replied_in_period, 0,to_number(null),change.emails_replied_in_period),
1427 decode(change.emails_rpld_by_goal_in_period, 0,to_number(null),change.emails_rpld_by_goal_in_period),
1428 decode(change.AGENT_EMAILS_RPLD_BY_GOAL, 0,to_number(null),change.AGENT_EMAILS_RPLD_BY_GOAL),
1429 decode(change.emails_deleted_in_period, 0,to_number(null),change.emails_deleted_in_period),
1430 decode(change.emails_trnsfrd_out_in_period, 0,to_number(null),change.emails_trnsfrd_out_in_period),
1431 decode(change.emails_trnsfrd_in_in_period, 0,to_number(null),change.emails_trnsfrd_in_in_period),
1432 decode(change.emails_assigned_in_period, 0,to_number(null),change.emails_assigned_in_period),
1433 decode(change.emails_auto_routed_in_period, 0,to_number(null),change.emails_auto_routed_in_period),
1434 decode(change.emails_auto_uptd_sr_in_period, 0,to_number(null),change.emails_auto_uptd_sr_in_period),
1435 decode(change.email_resp_time_in_period, 0,to_number(null),change.email_resp_time_in_period),
1436 decode(change.agent_resp_time_in_period, 0,to_number(null),change.agent_resp_time_in_period),
1437 decode(change.sr_created_in_period, 0,to_number(null),change.sr_created_in_period),
1438 decode(change.emails_rsl_and_trfd_in_period, 0,to_number(null),change.emails_rsl_and_trfd_in_period),
1439 decode(change.emails_orr_count_in_period, 0,to_number(null),change.emails_orr_count_in_period),
1440 decode(change.EMAILS_AUTO_REPLIED_IN_PERIOD, 0,to_number(null),change.EMAILS_AUTO_REPLIED_IN_PERIOD),
1441 decode(change.EMAILS_AUTO_DELETED_IN_PERIOD, 0,to_number(null),change.EMAILS_AUTO_DELETED_IN_PERIOD),
1442 decode(change.EMAILS_AUTO_RESOLVED_IN_PERIOD, 0,to_number(null),change.EMAILS_AUTO_RESOLVED_IN_PERIOD),
1443 decode(change.emails_composed_in_period, 0,to_number(null),change.emails_composed_in_period),
1444 decode(change.accumulated_open_emails, 0,to_number(null),change.accumulated_open_emails),
1445 decode(change.accumulated_emails_in_queue, 0,to_number(null),change.accumulated_emails_in_queue),
1446 decode(change.accumulated_emails_one_day, 0,to_number(null),change.accumulated_emails_one_day),
1447 decode(change.accumulated_emails_three_days, 0,to_number(null),change.accumulated_emails_three_days),
1448 decode(change.accumulated_emails_week, 0,to_number(null),change.accumulated_emails_week),
1449 decode(change.accumulated_emails_week_plus, 0,to_number(null),change.accumulated_emails_week_plus),
1450 change.request_id,
1451 change.program_application_id,
1452 change.program_id,
1453 change.program_update_date,
1454 decode(change.emails_rerouted_in_period, 0,to_number(null),change.emails_rerouted_in_period),
1455 decode(change.leads_created_in_period, 0,to_number(null),change.leads_created_in_period)
1456 );
1457
1458 write_log('Number of rows updated in table bix_email_details_stg for Emails Fetched and Replied ' || to_char(SQL%ROWCOUNT));
1459
1460
1461
1462 MERGE INTO BIX_EMAIL_DETAILS_STG fact
1463 USING
1464 (SELECT
1465 inv2.email_account_id
1466 email_account_id,
1467 inv2.email_classification_id
1468 email_classification_id,
1469 inv2.agent_id
1470 agent_id,
1471 inv2.party_id
1472 party_id,
1473 inv2.time_id
1474 time_id,
1475 1 period_type_id,
1476 inv2.period_start_date
1477 period_start_date,
1478 inv2.period_start_time
1479 period_start_time,
1480 inv2.outcome_id
1484 inv2.reason_id
1481 outcome_id,
1482 inv2.result_id
1483 result_id,
1485 reason_id,
1486 g_user_id
1487 created_by,
1488 g_sysdate
1489 creation_date,
1490 g_user_id
1491 last_updated_by,
1492 g_sysdate
1493 last_update_date,
1494 decode(sum(inv2.emails_offered_in_period), 0, to_number(null), sum(inv2.emails_offered_in_period)) emails_offered_in_period,
1495 0 emails_fetched_in_period,
1496 0 emails_replied_in_period,
1497 0 emails_rpld_by_goal_in_period,
1498 0 AGENT_EMAILS_RPLD_BY_GOAL,
1499 0 emails_deleted_in_period,
1500 0 emails_trnsfrd_out_in_period,
1501 0 emails_trnsfrd_in_in_period,
1502 0 emails_assigned_in_period,
1503 0 emails_auto_routed_in_period,
1504 0 emails_auto_uptd_sr_in_period,
1505 0 email_resp_time_in_period,
1506 0 agent_resp_time_in_period,
1507 0 sr_created_in_period,
1508 0 emails_rsl_and_trfd_in_period,
1509 0 EMAILS_AUTO_REPLIED_IN_PERIOD,
1510 0 EMAILS_AUTO_DELETED_IN_PERIOD,
1511 0 EMAILS_AUTO_RESOLVED_IN_PERIOD,
1512 0 emails_composed_in_period,
1513 0 emails_orr_count_in_period,
1514 0 accumulated_open_emails,
1515 0 accumulated_emails_in_queue,
1516 0 accumulated_emails_one_day,
1517 0 accumulated_emails_three_days,
1518 0 accumulated_emails_week,
1519 0 accumulated_emails_week_plus,
1520 0 LEADS_CREATED_IN_PERIOD,
1521 0 EMAILS_REROUTED_IN_PERIOD,
1522 g_request_id
1523 request_id,
1524 g_program_appl_id
1525 program_application_id,
1526 g_program_id
1527 program_id,
1528 g_sysdate
1529 program_update_date
1530 FROM
1531 (
1532 /*Query 2*/
1533 SELECT
1534 EMAIL_ACCOUNT_ID,
1535 EMAIL_CLASSIFICATION_ID,
1536 -1 AGENT_ID,
1537 PARTY_ID,
1538 PERIOD_START_DATE,
1539 TIME_ID,
1540 '00:00' PERIOD_START_TIME,
1541 -1 OUTCOME_ID,
1542 -1 RESULT_ID,
1543 -1 REASON_ID,
1544 COUNT(*) EMAILS_OFFERED_IN_PERIOD,
1545 0 EMAILS_FETCHED_IN_PERIOD,
1546 0 EMAILS_REPLIED_IN_PERIOD,
1547 0 AGENT_RESP_TIME_IN_PERIOD,
1548 0 EMAILS_RPLD_BY_GOAL_IN_PERIOD,
1549 0 AGENT_EMAILS_RPLD_BY_GOAL,
1550 0 EMAILS_TRNSFRD_OUT_IN_PERIOD,
1551 0 EMAILS_TRNSFRD_IN_IN_PERIOD,
1552 0 EMAILS_ASSIGNED_IN_PERIOD,
1553 0 EMAILS_AUTO_ROUTED_IN_PERIOD,
1554 0 EMAILS_AUTO_UPTD_SR_IN_PERIOD,
1555 0 EMAILS_DELETED_IN_PERIOD,
1556 0 EMAIL_RESP_TIME_IN_PERIOD,
1557 0 SR_CREATED_IN_PERIOD,
1558 0 EMAILS_RSL_AND_TRFD_IN_PERIOD,
1559 0 EMAILS_AUTO_REPLIED_IN_PERIOD,
1560 0 EMAILS_AUTO_DELETED_IN_PERIOD,
1561 0 EMAILS_AUTO_RESOLVED_IN_PERIOD,
1562 0 emails_composed_in_period,
1563 0 emails_orr_count_in_period,
1564 0 accumulated_open_emails,
1565 0 accumulated_emails_in_queue,
1566 0 accumulated_emails_one_day,
1567 0 accumulated_emails_three_days,
1568 0 accumulated_emails_week,
1569 0 accumulated_emails_week_plus,
1570 0 EMAILS_REROUTED_IN_PERIOD,
1571 0 LEADS_CREATED_IN_PERIOD
1572 FROM
1573 (
1574 SELECT
1575 nvl(mitm.source_id, -1) EMAIL_ACCOUNT_ID,
1576 nvl(irc.route_classification_id, -1) EMAIL_CLASSIFICATION_ID,
1577 -1 AGENT_ID,
1578 nvl(( SELECT
1579 distinct first_value(intr.party_id) over(order by actv.interaction_id desc) party_id
1580 FROM
1581 jtf_ih_activities actv,
1582 jtf_ih_interactions intr
1583 WHERE
1584 mitm.media_id = actv.media_id
1585 AND actv.interaction_id = intr.interaction_id
1586 ), -1) PARTY_ID,
1587 trunc(mitm.start_date_time) PERIOD_START_DATE,
1588 to_number(to_char(mitm.start_date_time, 'J')) TIME_ID
1589 FROM
1590 JTF_IH_MEDIA_ITEMS mitm,
1591 (
1592 select name, max(route_classification_id) route_classification_id
1593 from iem_route_classifications
1597 AND mitm.DIRECTION = 'INBOUND'
1594 group by name
1595 ) irc
1596 WHERE mitm.MEDIA_ITEM_TYPE = 'EMAIL'
1598 AND mitm.classification = irc.name(+)
1599 AND mitm.START_DATE_TIME BETWEEN g_collect_start_date and g_collect_end_date
1600 )
1601 GROUP BY
1602 EMAIL_ACCOUNT_ID,
1603 EMAIL_CLASSIFICATION_ID,
1604 AGENT_ID,
1605 PARTY_ID,
1606 PERIOD_START_DATE,
1607 TIME_ID
1608 ) inv2
1609 GROUP BY
1610 inv2.email_account_id,
1611 inv2.email_classification_id,
1612 inv2.agent_id,
1613 inv2.party_id,
1614 inv2.time_id,
1615 inv2.period_start_date,
1616 inv2.period_start_time,
1617 inv2.outcome_id,
1618 inv2.result_id,
1619 inv2.reason_id
1620 ) change
1621 ON (
1622 fact.email_account_id = change.email_account_id
1623 AND fact.email_classification_id = change.email_classification_id
1624 AND fact.agent_id = change.agent_id
1625 AND fact.party_id = change.party_id
1626 AND fact.time_id = change.time_id
1627 AND fact.period_type_id = change.period_type_id
1628 AND fact.period_start_date = change.period_start_date
1629 AND fact.period_start_time = change.period_start_time
1630 AND fact.outcome_id = change.outcome_id
1631 AND fact.result_id = change.result_id
1632 AND fact.reason_id = change.reason_id )
1633 WHEN MATCHED THEN
1634 UPDATE
1635 SET fact.emails_offered_in_period = DECODE(nvl(fact.emails_offered_in_period,0) + nvl(change.emails_offered_in_period,0),
1636 0, NULL, nvl(fact.emails_offered_in_period,0) + nvl(change.emails_offered_in_period,0))
1637 ,fact.emails_fetched_in_period = DECODE(nvl(fact.emails_fetched_in_period,0) + nvl(change.emails_fetched_in_period,0),
1638 0, NULL, nvl(fact.emails_fetched_in_period,0) + nvl(change.emails_fetched_in_period,0))
1639 ,fact.emails_replied_in_period = DECODE(nvl(fact.emails_replied_in_period,0) + nvl(change.emails_replied_in_period,0),
1640 0, NULL, nvl(fact.emails_replied_in_period,0) + nvl(change.emails_replied_in_period,0))
1641 ,fact.emails_rpld_by_goal_in_period = DECODE(nvl(fact.emails_rpld_by_goal_in_period,0) + nvl(change.emails_rpld_by_goal_in_period,
1642 0), 0, NULL, nvl(fact.emails_rpld_by_goal_in_period,0) + nvl(change.emails_rpld_by_goal_in_period,0))
1643 ,fact.AGENT_EMAILS_RPLD_BY_GOAL = DECODE(nvl(fact.AGENT_EMAILS_RPLD_BY_GOAL,0) + nvl(change.AGENT_EMAILS_RPLD_BY_GOAL,
1644 0), 0, NULL, nvl(fact.AGENT_EMAILS_RPLD_BY_GOAL,0) + nvl(change.AGENT_EMAILS_RPLD_BY_GOAL,0))
1645 ,fact.emails_deleted_in_period = DECODE(nvl(fact.emails_deleted_in_period,0) + nvl(change.emails_deleted_in_period,0), 0, NULL,
1646 nvl(fact.emails_deleted_in_period,0) + nvl(change.emails_deleted_in_period,0))
1647 ,fact.emails_trnsfrd_out_in_period = DECODE(nvl(fact.emails_trnsfrd_out_in_period,0) + nvl(change.emails_trnsfrd_out_in_period,0),
1648 0, NULL, nvl(fact.emails_trnsfrd_out_in_period,0) + nvl(change.emails_trnsfrd_out_in_period,0))
1649 ,fact.emails_trnsfrd_in_in_period = DECODE(nvl(fact.emails_trnsfrd_in_in_period,0) + nvl(change.emails_trnsfrd_in_in_period,0),
1650 0, NULL, nvl(fact.emails_trnsfrd_in_in_period,0) + nvl(change.emails_trnsfrd_in_in_period,0))
1651 ,fact.emails_assigned_in_period = DECODE(nvl(fact.emails_assigned_in_period,0) + nvl(change.emails_assigned_in_period,0),
1652 0, NULL, nvl(fact.emails_assigned_in_period,0) + nvl(change.emails_assigned_in_period,0))
1653 ,fact.emails_auto_routed_in_period = DECODE(nvl(fact.emails_auto_routed_in_period,0) + nvl(change.emails_auto_routed_in_period,0),
1654 0, NULL, nvl(fact.emails_auto_routed_in_period,0) + nvl(change.emails_auto_routed_in_period,0))
1655 ,fact.emails_auto_uptd_sr_in_period = DECODE(nvl(fact.emails_auto_uptd_sr_in_period,0) + nvl(change.emails_auto_uptd_sr_in_period,0),
1656 0, NULL, nvl(fact.emails_auto_uptd_sr_in_period,0) + nvl(change.emails_auto_uptd_sr_in_period,0))
1657 ,fact.email_resp_time_in_period = DECODE(nvl(fact.email_resp_time_in_period,0) + nvl(change.email_resp_time_in_period,0),
1658 0, NULL, nvl(fact.email_resp_time_in_period,0) + nvl(change.email_resp_time_in_period,0))
1659 ,fact.agent_resp_time_in_period = DECODE(nvl(fact.agent_resp_time_in_period,0) + nvl(change.agent_resp_time_in_period,0),
1660 0, NULL, nvl(fact.agent_resp_time_in_period,0) + nvl(change.agent_resp_time_in_period,0))
1661 ,fact.sr_created_in_period = DECODE(nvl(fact.sr_created_in_period,0) + nvl(change.sr_created_in_period,0),
1662 0, NULL, nvl(fact.sr_created_in_period,0) + nvl(change.sr_created_in_period,0))
1663 ,fact.emails_rsl_and_trfd_in_period = DECODE(nvl(fact.emails_rsl_and_trfd_in_period,0) + nvl(change.emails_rsl_and_trfd_in_period,0),
1664 0, NULL, nvl(fact.emails_rsl_and_trfd_in_period,0) + nvl(change.emails_rsl_and_trfd_in_period,0))
1665 ,fact.emails_orr_count_in_period = DECODE(nvl(fact.emails_orr_count_in_period,0) + nvl(change.emails_orr_count_in_period,0),
1666 0, NULL, nvl(fact.emails_orr_count_in_period,0) + nvl(change.emails_orr_count_in_period,0))
1667 ,fact.EMAILS_AUTO_REPLIED_IN_PERIOD = DECODE(nvl(fact.EMAILS_AUTO_REPLIED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_REPLIED_IN_PERIOD,0),
1668 0, NULL, nvl(fact.EMAILS_AUTO_REPLIED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_REPLIED_IN_PERIOD,0))
1669 ,fact.EMAILS_AUTO_DELETED_IN_PERIOD = DECODE(nvl(fact.EMAILS_AUTO_DELETED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_DELETED_IN_PERIOD,0),
1670 0, NULL, nvl(fact.EMAILS_AUTO_DELETED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_DELETED_IN_PERIOD,0))
1671 ,fact.EMAILS_AUTO_RESOLVED_IN_PERIOD = DECODE(nvl(fact.EMAILS_AUTO_RESOLVED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_RESOLVED_IN_PERIOD,
1672 0), 0, NULL, nvl(fact.EMAILS_AUTO_RESOLVED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_RESOLVED_IN_PERIOD,0))
1676 --Note that accumulated measures are not added together - they are replaced by the new
1673 ,fact.emails_composed_in_period = DECODE(nvl(fact.emails_composed_in_period,0) + nvl(change.emails_composed_in_period,0),
1674 0, NULL, nvl(fact.emails_composed_in_period,0) + nvl(change.emails_composed_in_period,0))
1675 --
1677 --calculated value as they are not additive.
1678 --
1679 ,fact.accumulated_open_emails = decode(change.accumulated_open_emails,0,to_number(NULL),change.accumulated_open_emails)
1680 ,fact.accumulated_emails_in_queue = decode(change.accumulated_emails_in_queue,0,to_number(NULL),change.accumulated_emails_in_queue)
1681 ,fact.accumulated_emails_one_day = decode(change.accumulated_emails_one_day,0,to_number(NULL),change.accumulated_emails_one_day)
1682 ,fact.accumulated_emails_three_days = decode(change.accumulated_emails_three_days,0,to_number(NULL),change.accumulated_emails_three_days)
1683 ,fact.accumulated_emails_week = decode(change.accumulated_emails_week,0,to_number(NULL),change.accumulated_emails_week)
1684 ,fact.accumulated_emails_week_plus = decode(change.accumulated_emails_week_plus,0,to_number(NULL),change.accumulated_emails_week_plus)
1685 ,fact.last_updated_by = change.last_updated_by
1686 ,fact.last_update_date = change.last_update_date
1687 ,fact.emails_rerouted_in_period = DECODE(nvl(fact.emails_rerouted_in_period,0) + nvl(change.emails_rerouted_in_period,0),
1688 0, NULL, nvl(fact.emails_rerouted_in_period,0) + nvl(change.emails_rerouted_in_period,0))
1689 ,fact.leads_created_in_period = DECODE(nvl(fact.leads_created_in_period,0) + nvl(change.leads_created_in_period,0),
1690 0, NULL, nvl(fact.leads_created_in_period,0) + nvl(change.leads_created_in_period,0))
1691 WHEN NOT MATCHED THEN
1692 INSERT (
1693 fact.email_account_id,
1694 fact.email_classification_id,
1695 fact.agent_id,
1696 fact.party_id,
1697 fact.time_id,
1698 fact.period_type_id,
1699 fact.period_start_date,
1700 fact.period_start_time,
1701 fact.outcome_id,
1702 fact.result_id,
1703 fact.reason_id,
1704 fact.created_by,
1705 fact.creation_date,
1706 fact.last_updated_by,
1707 fact.last_update_date,
1708 fact.emails_offered_in_period,
1709 fact.emails_fetched_in_period,
1710 fact.emails_replied_in_period,
1711 fact.emails_rpld_by_goal_in_period,
1712 fact.AGENT_EMAILS_RPLD_BY_GOAL,
1713 fact.emails_deleted_in_period,
1714 fact.emails_trnsfrd_out_in_period,
1715 fact.emails_trnsfrd_in_in_period,
1716 fact.emails_assigned_in_period,
1717 fact.emails_auto_routed_in_period,
1718 fact.emails_auto_uptd_sr_in_period,
1719 fact.email_resp_time_in_period,
1720 fact.agent_resp_time_in_period,
1721 fact.sr_created_in_period,
1722 fact.emails_rsl_and_trfd_in_period,
1723 fact.emails_orr_count_in_period,
1724 fact.EMAILS_AUTO_REPLIED_IN_PERIOD,
1725 fact.EMAILS_AUTO_DELETED_IN_PERIOD,
1726 fact.EMAILS_AUTO_RESOLVED_IN_PERIOD,
1727 fact.emails_composed_in_period,
1728 fact.accumulated_open_emails,
1729 fact.accumulated_emails_in_queue,
1730 fact.accumulated_emails_one_day,
1731 fact.accumulated_emails_three_days,
1732 fact.accumulated_emails_week,
1733 fact.accumulated_emails_week_plus,
1734 fact.request_id,
1735 fact.program_application_id,
1736 fact.program_id,
1737 fact.program_update_date,
1738 fact.emails_rerouted_in_period,
1739 fact.leads_created_in_period )
1740 VALUES (
1741 change.email_account_id,
1742 change.email_classification_id,
1743 change.agent_id,
1744 change.party_id,
1745 change.time_id,
1746 change.period_type_id,
1747 change.period_start_date,
1748 change.period_start_time,
1749 change.outcome_id,
1750 change.result_id,
1751 change.reason_id,
1752 change.created_by,
1753 change.creation_date,
1754 change.last_updated_by,
1755 change.last_update_date,
1756 decode(change.emails_offered_in_period,0,to_number(null), change.emails_offered_in_period),
1757 decode(change.emails_fetched_in_period, 0,to_number(null),change.emails_fetched_in_period),
1758 decode(change.emails_replied_in_period, 0,to_number(null),change.emails_replied_in_period),
1759 decode(change.emails_rpld_by_goal_in_period, 0,to_number(null),change.emails_rpld_by_goal_in_period),
1760 decode(change.AGENT_EMAILS_RPLD_BY_GOAL, 0,to_number(null),change.AGENT_EMAILS_RPLD_BY_GOAL),
1761 decode(change.emails_deleted_in_period, 0,to_number(null),change.emails_deleted_in_period),
1762 decode(change.emails_trnsfrd_out_in_period, 0,to_number(null),change.emails_trnsfrd_out_in_period),
1763 decode(change.emails_trnsfrd_in_in_period, 0,to_number(null),change.emails_trnsfrd_in_in_period),
1764 decode(change.emails_assigned_in_period, 0,to_number(null),change.emails_assigned_in_period),
1765 decode(change.emails_auto_routed_in_period, 0,to_number(null),change.emails_auto_routed_in_period),
1766 decode(change.emails_auto_uptd_sr_in_period, 0,to_number(null),change.emails_auto_uptd_sr_in_period),
1767 decode(change.email_resp_time_in_period, 0,to_number(null),change.email_resp_time_in_period),
1768 decode(change.agent_resp_time_in_period, 0,to_number(null),change.agent_resp_time_in_period),
1769 decode(change.sr_created_in_period, 0,to_number(null),change.sr_created_in_period),
1770 decode(change.emails_rsl_and_trfd_in_period, 0,to_number(null),change.emails_rsl_and_trfd_in_period),
1774 decode(change.EMAILS_AUTO_RESOLVED_IN_PERIOD, 0,to_number(null),change.EMAILS_AUTO_RESOLVED_IN_PERIOD),
1771 decode(change.emails_orr_count_in_period, 0,to_number(null),change.emails_orr_count_in_period),
1772 decode(change.EMAILS_AUTO_REPLIED_IN_PERIOD, 0,to_number(null),change.EMAILS_AUTO_REPLIED_IN_PERIOD),
1773 decode(change.EMAILS_AUTO_DELETED_IN_PERIOD, 0,to_number(null),change.EMAILS_AUTO_DELETED_IN_PERIOD),
1775 decode(change.emails_composed_in_period, 0,to_number(null),change.emails_composed_in_period),
1776 decode(change.accumulated_open_emails, 0,to_number(null),change.accumulated_open_emails),
1777 decode(change.accumulated_emails_in_queue, 0,to_number(null),change.accumulated_emails_in_queue),
1778 decode(change.accumulated_emails_one_day, 0,to_number(null),change.accumulated_emails_one_day),
1779 decode(change.accumulated_emails_three_days, 0,to_number(null),change.accumulated_emails_three_days),
1780 decode(change.accumulated_emails_week, 0,to_number(null),change.accumulated_emails_week),
1781 decode(change.accumulated_emails_week_plus, 0,to_number(null),change.accumulated_emails_week_plus),
1782 change.request_id,
1783 change.program_application_id,
1784 change.program_id,
1785 change.program_update_date,
1786 decode(change.emails_rerouted_in_period, 0,to_number(null),change.emails_rerouted_in_period),
1787 decode(change.leads_created_in_period, 0,to_number(null),change.leads_created_in_period)
1788 );
1789
1790
1791 write_log('Number of rows updated in table bix_email_details_stg for Emails Offered ' || to_char(SQL%ROWCOUNT));
1792
1793
1794 MERGE INTO BIX_EMAIL_DETAILS_STG fact
1795 USING
1796 (SELECT
1797 inv2.email_account_id
1798 email_account_id,
1799 inv2.email_classification_id
1800 email_classification_id,
1801 inv2.agent_id
1802 agent_id,
1803 inv2.party_id
1804 party_id,
1805 inv2.time_id
1806 time_id,
1807 1 period_type_id,
1808 inv2.period_start_date
1809 period_start_date,
1810 inv2.period_start_time
1811 period_start_time,
1812 inv2.outcome_id
1813 outcome_id,
1814 inv2.result_id
1815 result_id,
1816 inv2.reason_id
1817 reason_id,
1818 g_user_id
1819 created_by,
1820 g_sysdate
1821 creation_date,
1822 g_user_id
1823 last_updated_by,
1824 g_sysdate
1825 last_update_date,
1826 0
1827 emails_offered_in_period,
1828 0
1829 emails_fetched_in_period,
1830 0
1831 emails_replied_in_period,
1832 0
1833 emails_rpld_by_goal_in_period,
1834 0
1835 AGENT_EMAILS_RPLD_BY_GOAL,
1836 0
1837 emails_deleted_in_period,
1838 0
1839 emails_trnsfrd_out_in_period,
1840 0
1841 emails_trnsfrd_in_in_period,
1842 0
1843 emails_assigned_in_period,
1844 0
1845 emails_auto_routed_in_period,
1846 0
1847 emails_auto_uptd_sr_in_period,
1848 0
1849 email_resp_time_in_period,
1850 0
1851 agent_resp_time_in_period,
1852 decode(sum(inv2.sr_created_in_period), 0, to_number(null), sum(inv2.sr_created_in_period))
1853 sr_created_in_period,
1854 0
1855 emails_rsl_and_trfd_in_period,
1856 0
1857 EMAILS_AUTO_REPLIED_IN_PERIOD,
1861 EMAILS_AUTO_RESOLVED_IN_PERIOD,
1858 0
1859 EMAILS_AUTO_DELETED_IN_PERIOD,
1860 0
1862 0
1863 emails_composed_in_period,
1864 0
1865 emails_orr_count_in_period,
1866 0
1867 accumulated_open_emails,
1868 0
1869 accumulated_emails_in_queue,
1870 0
1871 accumulated_emails_one_day,
1872 0
1873 accumulated_emails_three_days,
1874 0
1875 accumulated_emails_week,
1876 0
1877 accumulated_emails_week_plus,
1878 decode(sum(LEADS_CREATED_IN_PERIOD), 0, to_number(null), sum(LEADS_CREATED_IN_PERIOD))
1879 LEADS_CREATED_IN_PERIOD,
1880 0 EMAILS_REROUTED_IN_PERIOD,
1881 g_request_id
1882 request_id,
1883 g_program_appl_id
1884 program_application_id,
1885 g_program_id
1886 program_id,
1887 g_sysdate
1888 program_update_date
1889 FROM
1890 (
1891 /* Query 3 */
1892 SELECT /*+ index(actv jtf_ih_activities_n11) */
1893 nvl(email_account_id, -1) EMAIL_ACCOUNT_ID,
1894 nvl(email_classification_id, -1) EMAIL_CLASSIFICATION_ID,
1895 nvl(agent_id, -1) AGENT_ID,
1896 nvl(party_id, -1) PARTY_ID,
1897 trunc(period_start_date) PERIOD_START_DATE,
1898 time_id TIME_ID,
1899 '00:00' PERIOD_START_TIME,
1900 -1 OUTCOME_ID,
1901 -1 RESULT_ID,
1902 -1 REASON_ID,
1903 0 EMAILS_OFFERED_IN_PERIOD,
1904 0 EMAILS_FETCHED_IN_PERIOD,
1905 0 EMAILS_REPLIED_IN_PERIOD,
1906 0 AGENT_RESP_TIME_IN_PERIOD,
1907 0 EMAILS_RPLD_BY_GOAL_IN_PERIOD,
1908 0 AGENT_EMAILS_RPLD_BY_GOAL,
1909 0 EMAILS_TRNSFRD_OUT_IN_PERIOD,
1910 0 EMAILS_TRNSFRD_IN_IN_PERIOD,
1911 0 EMAILS_ASSIGNED_IN_PERIOD,
1912 0 EMAILS_AUTO_ROUTED_IN_PERIOD,
1913 0 EMAILS_AUTO_UPTD_SR_IN_PERIOD,
1914 0 EMAILS_DELETED_IN_PERIOD,
1915 0 EMAIL_RESP_TIME_IN_PERIOD,
1916 SUM(DECODE(action_id,13,1)) SR_CREATED_IN_PERIOD,
1917 0 EMAILS_RSL_AND_TRFD_IN_PERIOD,
1918 0 EMAILS_AUTO_REPLIED_IN_PERIOD,
1919 0 EMAILS_AUTO_DELETED_IN_PERIOD,
1920 0 EMAILS_AUTO_RESOLVED_IN_PERIOD,
1921 0 emails_composed_in_period,
1922 0 emails_orr_count_in_period,
1926 0 accumulated_emails_three_days,
1923 0 accumulated_open_emails,
1924 0 accumulated_emails_in_queue,
1925 0 accumulated_emails_one_day,
1927 0 accumulated_emails_week,
1928 0 accumulated_emails_week_plus,
1929 0 EMAILS_REROUTED_IN_PERIOD,
1930 SUM(DECODE(action_id,71,1)) LEADS_CREATED_IN_PERIOD
1931 FROM
1932 (
1933 SELECT
1934 nvl(mitm.source_id, -1) EMAIL_ACCOUNT_ID,
1935 nvl(irc.route_classification_id, -1) EMAIL_CLASSIFICATION_ID,
1936 nvl(intr.resource_id, -1) AGENT_ID,
1937 first_value(party_id) over(partition by actv.media_id order by actv.interaction_id DESC) PARTY_ID,
1938 trunc(actv.start_date_time) PERIOD_START_DATE,
1939 to_number(to_char(actv.start_date_time, 'J')) TIME_ID,
1940 actv.action_id ACTION_ID
1941 FROM
1942 JTF_IH_ACTIVITIES actv,
1943 JTF_IH_INTERACTIONS intr,
1944 JTF_IH_MEDIA_ITEMS mitm,
1945 (select /*+ index(actv jtf_ih_activities_n11) use_nl(actv actv1 mitm) */
1946 actv.interaction_id interaction_id,
1947 max(mitm.classification) classification
1948 from
1949 jtf_ih_activities actv,
1950 jtf_ih_media_items mitm
1951 where
1952 actv.start_date_time BETWEEN g_collect_start_date AND g_collect_end_date
1953 and actv.media_id = mitm.media_id
1954 and mitm.direction = 'INBOUND'
1955 and mitm.media_item_type = 'EMAIL'
1956 group by actv.interaction_id ) inv2,
1957 --
1958 --Changes for R12
1959 --
1960 (
1961 select name, max(route_classification_id) route_classification_id
1962 from iem_route_classifications
1963 group by name
1964 ) irc
1965 WHERE
1966 actv.start_date_time BETWEEN g_collect_start_date AND g_collect_end_date
1967 AND ( ( actv.action_id = 13 AND actv.action_item_id = 17 ) OR
1968 ( actv.action_id = 71 AND actv.action_item_id = 8 )
1969 )
1970 AND actv.media_id = mitm.media_id
1971 AND mitm.MEDIA_ITEM_TYPE = 'EMAIL'
1972 AND inv2.classification = irc.name(+)
1973 AND actv.interaction_id = intr.interaction_id
1974 AND actv.interaction_id = inv2.interaction_id(+)
1975 )
1976 GROUP BY
1977 nvl(email_account_id, -1),
1978 nvl(email_classification_id, -1),
1979 agent_id,
1980 nvl(party_id, -1),
1981 trunc(period_start_date),
1982 time_id
1983 )inv2
1984 GROUP BY
1985 inv2.email_account_id,
1986 inv2.email_classification_id,
1987 inv2.agent_id,
1988 inv2.party_id,
1989 inv2.time_id,
1990 inv2.period_start_date,
1991 inv2.period_start_time,
1992 inv2.outcome_id,
1993 inv2.result_id,
1994 inv2.reason_id
1995 ) change
1996 ON (
1997 fact.email_account_id = change.email_account_id
1998 AND fact.email_classification_id = change.email_classification_id
1999 AND fact.agent_id = change.agent_id
2000 AND fact.party_id = change.party_id
2001 AND fact.time_id = change.time_id
2002 AND fact.period_type_id = change.period_type_id
2003 AND fact.period_start_date = change.period_start_date
2004 AND fact.period_start_time = change.period_start_time
2005 AND fact.outcome_id = change.outcome_id
2006 AND fact.result_id = change.result_id
2007 AND fact.reason_id = change.reason_id )
2008 WHEN MATCHED THEN
2009 UPDATE
2010 SET fact.emails_offered_in_period = DECODE(nvl(fact.emails_offered_in_period,0) + nvl(change.emails_offered_in_period,0),
2011 0, NULL, nvl(fact.emails_offered_in_period,0) + nvl(change.emails_offered_in_period,0))
2012 ,fact.emails_fetched_in_period = DECODE(nvl(fact.emails_fetched_in_period,0) + nvl(change.emails_fetched_in_period,0),
2013 0, NULL, nvl(fact.emails_fetched_in_period,0) + nvl(change.emails_fetched_in_period,0))
2014 ,fact.emails_replied_in_period = DECODE(nvl(fact.emails_replied_in_period,0) + nvl(change.emails_replied_in_period,0),
2015 0, NULL, nvl(fact.emails_replied_in_period,0) + nvl(change.emails_replied_in_period,0))
2016 ,fact.emails_rpld_by_goal_in_period = DECODE(nvl(fact.emails_rpld_by_goal_in_period,0) + nvl(change.emails_rpld_by_goal_in_period,
2017 0), 0, NULL, nvl(fact.emails_rpld_by_goal_in_period,0) + nvl(change.emails_rpld_by_goal_in_period,0))
2018 ,fact.AGENT_EMAILS_RPLD_BY_GOAL = DECODE(nvl(fact.AGENT_EMAILS_RPLD_BY_GOAL,0) + nvl(change.AGENT_EMAILS_RPLD_BY_GOAL,
2022 ,fact.emails_trnsfrd_out_in_period = DECODE(nvl(fact.emails_trnsfrd_out_in_period,0) + nvl(change.emails_trnsfrd_out_in_period,0),
2019 0), 0, NULL, nvl(fact.AGENT_EMAILS_RPLD_BY_GOAL,0) + nvl(change.AGENT_EMAILS_RPLD_BY_GOAL,0))
2020 ,fact.emails_deleted_in_period = DECODE(nvl(fact.emails_deleted_in_period,0) + nvl(change.emails_deleted_in_period,0), 0, NULL,
2021 nvl(fact.emails_deleted_in_period,0) + nvl(change.emails_deleted_in_period,0))
2023 0, NULL, nvl(fact.emails_trnsfrd_out_in_period,0) + nvl(change.emails_trnsfrd_out_in_period,0))
2024 ,fact.emails_trnsfrd_in_in_period = DECODE(nvl(fact.emails_trnsfrd_in_in_period,0) + nvl(change.emails_trnsfrd_in_in_period,0),
2025 0, NULL, nvl(fact.emails_trnsfrd_in_in_period,0) + nvl(change.emails_trnsfrd_in_in_period,0))
2026 ,fact.emails_assigned_in_period = DECODE(nvl(fact.emails_assigned_in_period,0) + nvl(change.emails_assigned_in_period,0),
2027 0, NULL, nvl(fact.emails_assigned_in_period,0) + nvl(change.emails_assigned_in_period,0))
2028 ,fact.emails_auto_routed_in_period = DECODE(nvl(fact.emails_auto_routed_in_period,0) + nvl(change.emails_auto_routed_in_period,0),
2029 0, NULL, nvl(fact.emails_auto_routed_in_period,0) + nvl(change.emails_auto_routed_in_period,0))
2030 ,fact.emails_auto_uptd_sr_in_period = DECODE(nvl(fact.emails_auto_uptd_sr_in_period,0) + nvl(change.emails_auto_uptd_sr_in_period,0),
2031 0, NULL, nvl(fact.emails_auto_uptd_sr_in_period,0) + nvl(change.emails_auto_uptd_sr_in_period,0))
2032 ,fact.email_resp_time_in_period = DECODE(nvl(fact.email_resp_time_in_period,0) + nvl(change.email_resp_time_in_period,0),
2033 0, NULL, nvl(fact.email_resp_time_in_period,0) + nvl(change.email_resp_time_in_period,0))
2034 ,fact.agent_resp_time_in_period = DECODE(nvl(fact.agent_resp_time_in_period,0) + nvl(change.agent_resp_time_in_period,0),
2035 0, NULL, nvl(fact.agent_resp_time_in_period,0) + nvl(change.agent_resp_time_in_period,0))
2036 ,fact.sr_created_in_period = DECODE(nvl(fact.sr_created_in_period,0) + nvl(change.sr_created_in_period,0),
2037 0, NULL, nvl(fact.sr_created_in_period,0) + nvl(change.sr_created_in_period,0))
2038 ,fact.emails_rsl_and_trfd_in_period = DECODE(nvl(fact.emails_rsl_and_trfd_in_period,0) + nvl(change.emails_rsl_and_trfd_in_period,0),
2039 0, NULL, nvl(fact.emails_rsl_and_trfd_in_period,0) + nvl(change.emails_rsl_and_trfd_in_period,0))
2040 ,fact.emails_orr_count_in_period = DECODE(nvl(fact.emails_orr_count_in_period,0) + nvl(change.emails_orr_count_in_period,0),
2041 0, NULL, nvl(fact.emails_orr_count_in_period,0) + nvl(change.emails_orr_count_in_period,0))
2042 ,fact.EMAILS_AUTO_REPLIED_IN_PERIOD = DECODE(nvl(fact.EMAILS_AUTO_REPLIED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_REPLIED_IN_PERIOD,0),
2043 0, NULL, nvl(fact.EMAILS_AUTO_REPLIED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_REPLIED_IN_PERIOD,0))
2044 ,fact.EMAILS_AUTO_DELETED_IN_PERIOD = DECODE(nvl(fact.EMAILS_AUTO_DELETED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_DELETED_IN_PERIOD,0),
2045 0, NULL, nvl(fact.EMAILS_AUTO_DELETED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_DELETED_IN_PERIOD,0))
2046 ,fact.EMAILS_AUTO_RESOLVED_IN_PERIOD = DECODE(nvl(fact.EMAILS_AUTO_RESOLVED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_RESOLVED_IN_PERIOD,
2047 0), 0, NULL, nvl(fact.EMAILS_AUTO_RESOLVED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_RESOLVED_IN_PERIOD,0))
2048 ,fact.emails_composed_in_period = DECODE(nvl(fact.emails_composed_in_period,0) + nvl(change.emails_composed_in_period,0),
2049 0, NULL, nvl(fact.emails_composed_in_period,0) + nvl(change.emails_composed_in_period,0))
2050 --
2051 --Note that accumulated measures are not added together - they are replaced by the new
2052 --calculated value as they are not additive.
2053 --
2054 ,fact.accumulated_open_emails = decode(change.accumulated_open_emails,0,to_number(NULL),change.accumulated_open_emails)
2055 ,fact.accumulated_emails_in_queue = decode(change.accumulated_emails_in_queue,0,to_number(NULL),change.accumulated_emails_in_queue)
2056 ,fact.accumulated_emails_one_day = decode(change.accumulated_emails_one_day,0,to_number(NULL),change.accumulated_emails_one_day)
2057 ,fact.accumulated_emails_three_days = decode(change.accumulated_emails_three_days,0,to_number(NULL),change.accumulated_emails_three_days)
2058 ,fact.accumulated_emails_week = decode(change.accumulated_emails_week,0,to_number(NULL),change.accumulated_emails_week)
2059 ,fact.accumulated_emails_week_plus = decode(change.accumulated_emails_week_plus,0,to_number(NULL),change.accumulated_emails_week_plus)
2060 ,fact.last_updated_by = change.last_updated_by
2061 ,fact.last_update_date = change.last_update_date
2062 ,fact.emails_rerouted_in_period = DECODE(nvl(fact.emails_rerouted_in_period,0) + nvl(change.emails_rerouted_in_period,0),
2063 0, NULL, nvl(fact.emails_rerouted_in_period,0) + nvl(change.emails_rerouted_in_period,0))
2064 ,fact.leads_created_in_period = DECODE(nvl(fact.leads_created_in_period,0) + nvl(change.leads_created_in_period,0),
2065 0, NULL, nvl(fact.leads_created_in_period,0) + nvl(change.leads_created_in_period,0))
2066 WHEN NOT MATCHED THEN
2067 INSERT (
2068 fact.email_account_id,
2069 fact.email_classification_id,
2070 fact.agent_id,
2071 fact.party_id,
2072 fact.time_id,
2073 fact.period_type_id,
2074 fact.period_start_date,
2075 fact.period_start_time,
2076 fact.outcome_id,
2077 fact.result_id,
2078 fact.reason_id,
2079 fact.created_by,
2080 fact.creation_date,
2081 fact.last_updated_by,
2082 fact.last_update_date,
2083 fact.emails_offered_in_period,
2084 fact.emails_fetched_in_period,
2085 fact.emails_replied_in_period,
2086 fact.emails_rpld_by_goal_in_period,
2087 fact.AGENT_EMAILS_RPLD_BY_GOAL,
2091 fact.emails_assigned_in_period,
2088 fact.emails_deleted_in_period,
2089 fact.emails_trnsfrd_out_in_period,
2090 fact.emails_trnsfrd_in_in_period,
2092 fact.emails_auto_routed_in_period,
2093 fact.emails_auto_uptd_sr_in_period,
2094 fact.email_resp_time_in_period,
2095 fact.agent_resp_time_in_period,
2096 fact.sr_created_in_period,
2097 fact.emails_rsl_and_trfd_in_period,
2098 fact.emails_orr_count_in_period,
2099 fact.EMAILS_AUTO_REPLIED_IN_PERIOD,
2100 fact.EMAILS_AUTO_DELETED_IN_PERIOD,
2101 fact.EMAILS_AUTO_RESOLVED_IN_PERIOD,
2102 fact.emails_composed_in_period,
2103 fact.accumulated_open_emails,
2104 fact.accumulated_emails_in_queue,
2105 fact.accumulated_emails_one_day,
2106 fact.accumulated_emails_three_days,
2107 fact.accumulated_emails_week,
2108 fact.accumulated_emails_week_plus,
2109 fact.request_id,
2110 fact.program_application_id,
2111 fact.program_id,
2112 fact.program_update_date,
2113 fact.emails_rerouted_in_period,
2114 fact.leads_created_in_period )
2115 VALUES (
2116 change.email_account_id,
2117 change.email_classification_id,
2118 change.agent_id,
2119 change.party_id,
2120 change.time_id,
2121 change.period_type_id,
2122 change.period_start_date,
2123 change.period_start_time,
2124 change.outcome_id,
2125 change.result_id,
2126 change.reason_id,
2127 change.created_by,
2128 change.creation_date,
2129 change.last_updated_by,
2130 change.last_update_date,
2131 decode(change.emails_offered_in_period,0,to_number(null), change.emails_offered_in_period),
2132 decode(change.emails_fetched_in_period, 0,to_number(null),change.emails_fetched_in_period),
2133 decode(change.emails_replied_in_period, 0,to_number(null),change.emails_replied_in_period),
2134 decode(change.emails_rpld_by_goal_in_period, 0,to_number(null),change.emails_rpld_by_goal_in_period),
2135 decode(change.AGENT_EMAILS_RPLD_BY_GOAL, 0,to_number(null),change.AGENT_EMAILS_RPLD_BY_GOAL),
2136 decode(change.emails_deleted_in_period, 0,to_number(null),change.emails_deleted_in_period),
2137 decode(change.emails_trnsfrd_out_in_period, 0,to_number(null),change.emails_trnsfrd_out_in_period),
2138 decode(change.emails_trnsfrd_in_in_period, 0,to_number(null),change.emails_trnsfrd_in_in_period),
2139 decode(change.emails_assigned_in_period, 0,to_number(null),change.emails_assigned_in_period),
2140 decode(change.emails_auto_routed_in_period, 0,to_number(null),change.emails_auto_routed_in_period),
2141 decode(change.emails_auto_uptd_sr_in_period, 0,to_number(null),change.emails_auto_uptd_sr_in_period),
2142 decode(change.email_resp_time_in_period, 0,to_number(null),change.email_resp_time_in_period),
2143 decode(change.agent_resp_time_in_period, 0,to_number(null),change.agent_resp_time_in_period),
2144 decode(change.sr_created_in_period, 0,to_number(null),change.sr_created_in_period),
2145 decode(change.emails_rsl_and_trfd_in_period, 0,to_number(null),change.emails_rsl_and_trfd_in_period),
2146 decode(change.emails_orr_count_in_period, 0,to_number(null),change.emails_orr_count_in_period),
2147 decode(change.EMAILS_AUTO_REPLIED_IN_PERIOD, 0,to_number(null),change.EMAILS_AUTO_REPLIED_IN_PERIOD),
2148 decode(change.EMAILS_AUTO_DELETED_IN_PERIOD, 0,to_number(null),change.EMAILS_AUTO_DELETED_IN_PERIOD),
2149 decode(change.EMAILS_AUTO_RESOLVED_IN_PERIOD, 0,to_number(null),change.EMAILS_AUTO_RESOLVED_IN_PERIOD),
2150 decode(change.emails_composed_in_period, 0,to_number(null),change.emails_composed_in_period),
2151 decode(change.accumulated_open_emails, 0,to_number(null),change.accumulated_open_emails),
2152 decode(change.accumulated_emails_in_queue, 0,to_number(null),change.accumulated_emails_in_queue),
2153 decode(change.accumulated_emails_one_day, 0,to_number(null),change.accumulated_emails_one_day),
2154 decode(change.accumulated_emails_three_days, 0,to_number(null),change.accumulated_emails_three_days),
2155 decode(change.accumulated_emails_week, 0,to_number(null),change.accumulated_emails_week),
2156 decode(change.accumulated_emails_week_plus, 0,to_number(null),change.accumulated_emails_week_plus),
2157 change.request_id,
2158 change.program_application_id,
2159 change.program_id,
2160 change.program_update_date,
2161 decode(change.emails_rerouted_in_period, 0,to_number(null),change.emails_rerouted_in_period),
2162 decode(change.leads_created_in_period, 0,to_number(null),change.leads_created_in_period)
2163 );
2164
2165 write_log('Number of rows updated in table bix_email_details_stg for SR and leads created ' || to_char(SQL%ROWCOUNT));
2166
2167
2168 MERGE INTO BIX_EMAIL_DETAILS_STG fact
2169 USING
2170 (SELECT
2171 inv2.email_account_id
2172 email_account_id,
2173 inv2.email_classification_id
2174 email_classification_id,
2175 inv2.agent_id
2176 agent_id,
2177 inv2.party_id
2178 party_id,
2179 inv2.time_id
2180 time_id,
2181 1 period_type_id,
2182 inv2.period_start_date
2183 period_start_date,
2184 inv2.period_start_time
2185 period_start_time,
2186 inv2.outcome_id
2187 outcome_id,
2188 inv2.result_id
2189 result_id,
2190 inv2.reason_id
2194 g_sysdate
2191 reason_id,
2192 g_user_id
2193 created_by,
2195 creation_date,
2196 g_user_id
2197 last_updated_by,
2198 g_sysdate
2199 last_update_date,
2200 0
2201 emails_offered_in_period,
2202 0
2203 emails_fetched_in_period,
2204 0
2205 emails_replied_in_period,
2206 0
2207 emails_rpld_by_goal_in_period,
2208 0
2209 AGENT_EMAILS_RPLD_BY_GOAL,
2210 0
2211 emails_deleted_in_period,
2212 0
2213 emails_trnsfrd_out_in_period,
2214 0
2215 emails_trnsfrd_in_in_period,
2216 0
2217 emails_assigned_in_period,
2218 0
2219 emails_auto_routed_in_period,
2220 0
2221 emails_auto_uptd_sr_in_period,
2222 0
2223 email_resp_time_in_period,
2224 0
2225 agent_resp_time_in_period,
2226 0
2227 sr_created_in_period,
2228 decode(sum(inv2.emails_rsl_and_trfd_in_period), 0, to_number(null), sum(inv2.emails_rsl_and_trfd_in_period))
2229 emails_rsl_and_trfd_in_period,
2230 0
2231 EMAILS_AUTO_REPLIED_IN_PERIOD,
2232 0
2233 EMAILS_AUTO_DELETED_IN_PERIOD,
2234 0
2235 EMAILS_AUTO_RESOLVED_IN_PERIOD,
2236 0
2237 emails_composed_in_period,
2238 0
2239 emails_orr_count_in_period,
2240 0
2241 accumulated_open_emails,
2242 0
2243 accumulated_emails_in_queue,
2244 0
2245 accumulated_emails_one_day,
2246 0
2247 accumulated_emails_three_days,
2248 0
2249 accumulated_emails_week,
2250 0
2251 accumulated_emails_week_plus,
2252 0
2253 LEADS_CREATED_IN_PERIOD,
2254 0
2255 EMAILS_REROUTED_IN_PERIOD,
2256 g_request_id
2257 request_id,
2258 g_program_appl_id
2259 program_application_id,
2260 g_program_id
2261 program_id,
2262 g_sysdate
2263 program_update_date
2264 FROM
2265 (
2266
2267 /* Query 4 */
2268 SELECT
2269 EMAIL_ACCOUNT_ID,
2270 EMAIL_CLASSIFICATION_ID,
2271 AGENT_ID,
2272 PARTY_ID,
2273 PERIOD_START_DATE,
2274 TIME_ID,
2275 '00:00' PERIOD_START_TIME,
2276 -1 OUTCOME_ID,
2277 -1 RESULT_ID,
2278 -1 REASON_ID,
2279 0 EMAILS_OFFERED_IN_PERIOD,
2280 0 EMAILS_FETCHED_IN_PERIOD,
2281 0 EMAILS_REPLIED_IN_PERIOD,
2282 0 AGENT_RESP_TIME_IN_PERIOD,
2283 0 EMAILS_RPLD_BY_GOAL_IN_PERIOD,
2284 0 AGENT_EMAILS_RPLD_BY_GOAL,
2285 0 EMAILS_TRNSFRD_OUT_IN_PERIOD,
2286 0 EMAILS_TRNSFRD_IN_IN_PERIOD,
2287 0 EMAILS_ASSIGNED_IN_PERIOD,
2288 0 EMAILS_AUTO_ROUTED_IN_PERIOD,
2289 0 EMAILS_AUTO_UPTD_SR_IN_PERIOD,
2290 0 EMAILS_DELETED_IN_PERIOD,
2291 0 EMAIL_RESP_TIME_IN_PERIOD,
2292 0 SR_CREATED_IN_PERIOD,
2293 count(*) EMAILS_RSL_AND_TRFD_IN_PERIOD,
2294 0 EMAILS_AUTO_REPLIED_IN_PERIOD,
2295 0 EMAILS_AUTO_DELETED_IN_PERIOD,
2296 0 EMAILS_AUTO_RESOLVED_IN_PERIOD,
2297 0 emails_composed_in_period,
2298 0 emails_orr_count_in_period,
2299 0 accumulated_open_emails,
2300 0 accumulated_emails_in_queue,
2301 0 accumulated_emails_one_day,
2302 0 accumulated_emails_three_days,
2303 0 accumulated_emails_week,
2304 0 accumulated_emails_week_plus,
2305 0 EMAILS_REROUTED_IN_PERIOD,
2306 0 LEADS_CREATED_IN_PERIOD
2307 FROM
2308 (SELECT /*+ index (mseg jtf_ih_media_item_lc_segs_n3) use_nl(mseg mitm) */
2309 nvl(mitm.source_id, -1) EMAIL_ACCOUNT_ID,
2310 nvl(irc.route_classification_id, -1) EMAIL_CLASSIFICATION_ID,
2311 nvl(mseg.resource_id, -1) AGENT_ID,
2312 nvl(( SELECT
2316 jtf_ih_interactions intr
2313 distinct first_value(intr.party_id) over(order by actv.interaction_id desc) party_id
2314 FROM
2315 jtf_ih_activities actv,
2317 WHERE
2318 mitm.media_id = actv.media_id
2319 AND actv.interaction_id = intr.interaction_id
2320 ), -1) PARTY_ID,
2321 trunc(mseg.start_date_time) PERIOD_START_DATE,
2322 to_number(to_char(mseg.start_date_time, 'J')) TIME_ID
2323 FROM
2324 JTF_IH_MEDIA_ITEMS mitm,
2325 JTF_IH_MEDIA_ITEM_LC_SEGS mseg,
2326 JTF_IH_MEDIA_ITM_LC_SEG_TYS mtyp,
2327 (
2328 select name, max(route_classification_id) route_classification_id
2329 from iem_route_classifications
2330 group by name
2331 ) irc
2332 WHERE mitm.MEDIA_ITEM_TYPE = 'EMAIL'
2333 AND mitm.DIRECTION = 'INBOUND'
2334 AND mitm.classification = irc.name(+)
2335 AND mitm.MEDIA_ID = mseg.MEDIA_ID
2336 AND mseg.MILCS_TYPE_ID = mtyp.MILCS_TYPE_ID
2337 AND mtyp.MILCS_CODE IN ('EMAIL_REPLY', 'EMAIL_DELETED')
2338 AND mseg.START_DATE_TIME BETWEEN g_collect_start_date and g_collect_end_date
2339 AND EXISTS (
2340 SELECT
2341 1
2342 FROM
2343 jtf_ih_media_item_lc_segs mseg1,
2344 jtf_ih_media_itm_lc_seg_tys mtys1
2345 WHERE mseg1.media_id = mitm.media_id
2346 AND mtys1.milcs_type_id = mseg1.milcs_type_id
2347 AND mtys1.milcs_code IN ( 'EMAIL_TRANSFERRED','EMAIL_ESCALATED') )
2348 )
2349 GROUP BY
2350 EMAIL_ACCOUNT_ID,
2351 EMAIL_CLASSIFICATION_ID,
2352 AGENT_ID,
2353 PARTY_ID,
2354 PERIOD_START_DATE,
2355 TIME_ID
2356 )inv2
2357 GROUP BY
2358 inv2.email_account_id,
2359 inv2.email_classification_id,
2360 inv2.agent_id,
2361 inv2.party_id,
2362 inv2.time_id,
2363 inv2.period_start_date,
2364 inv2.period_start_time,
2365 inv2.outcome_id,
2366 inv2.result_id,
2367 inv2.reason_id
2368 ) change
2369 ON (
2370 fact.email_account_id = change.email_account_id
2371 AND fact.email_classification_id = change.email_classification_id
2372 AND fact.agent_id = change.agent_id
2373 AND fact.party_id = change.party_id
2374 AND fact.time_id = change.time_id
2375 AND fact.period_type_id = change.period_type_id
2376 AND fact.period_start_date = change.period_start_date
2377 AND fact.period_start_time = change.period_start_time
2378 AND fact.outcome_id = change.outcome_id
2379 AND fact.result_id = change.result_id
2380 AND fact.reason_id = change.reason_id )
2381 WHEN MATCHED THEN
2382 UPDATE
2383 SET fact.emails_offered_in_period = DECODE(nvl(fact.emails_offered_in_period,0) + nvl(change.emails_offered_in_period,0),
2384 0, NULL, nvl(fact.emails_offered_in_period,0) + nvl(change.emails_offered_in_period,0))
2385 ,fact.emails_fetched_in_period = DECODE(nvl(fact.emails_fetched_in_period,0) + nvl(change.emails_fetched_in_period,0),
2386 0, NULL, nvl(fact.emails_fetched_in_period,0) + nvl(change.emails_fetched_in_period,0))
2387 ,fact.emails_replied_in_period = DECODE(nvl(fact.emails_replied_in_period,0) + nvl(change.emails_replied_in_period,0),
2388 0, NULL, nvl(fact.emails_replied_in_period,0) + nvl(change.emails_replied_in_period,0))
2389 ,fact.emails_rpld_by_goal_in_period = DECODE(nvl(fact.emails_rpld_by_goal_in_period,0) + nvl(change.emails_rpld_by_goal_in_period,
2390 0), 0, NULL, nvl(fact.emails_rpld_by_goal_in_period,0) + nvl(change.emails_rpld_by_goal_in_period,0))
2391 ,fact.AGENT_EMAILS_RPLD_BY_GOAL = DECODE(nvl(fact.AGENT_EMAILS_RPLD_BY_GOAL,0) + nvl(change.AGENT_EMAILS_RPLD_BY_GOAL,
2392 0), 0, NULL, nvl(fact.AGENT_EMAILS_RPLD_BY_GOAL,0) + nvl(change.AGENT_EMAILS_RPLD_BY_GOAL,0))
2393 ,fact.emails_deleted_in_period = DECODE(nvl(fact.emails_deleted_in_period,0) + nvl(change.emails_deleted_in_period,0), 0, NULL,
2394 nvl(fact.emails_deleted_in_period,0) + nvl(change.emails_deleted_in_period,0))
2395 ,fact.emails_trnsfrd_out_in_period = DECODE(nvl(fact.emails_trnsfrd_out_in_period,0) + nvl(change.emails_trnsfrd_out_in_period,0),
2396 0, NULL, nvl(fact.emails_trnsfrd_out_in_period,0) + nvl(change.emails_trnsfrd_out_in_period,0))
2397 ,fact.emails_trnsfrd_in_in_period = DECODE(nvl(fact.emails_trnsfrd_in_in_period,0) + nvl(change.emails_trnsfrd_in_in_period,0),
2398 0, NULL, nvl(fact.emails_trnsfrd_in_in_period,0) + nvl(change.emails_trnsfrd_in_in_period,0))
2399 ,fact.emails_assigned_in_period = DECODE(nvl(fact.emails_assigned_in_period,0) + nvl(change.emails_assigned_in_period,0),
2400 0, NULL, nvl(fact.emails_assigned_in_period,0) + nvl(change.emails_assigned_in_period,0))
2401 ,fact.emails_auto_routed_in_period = DECODE(nvl(fact.emails_auto_routed_in_period,0) + nvl(change.emails_auto_routed_in_period,0),
2402 0, NULL, nvl(fact.emails_auto_routed_in_period,0) + nvl(change.emails_auto_routed_in_period,0))
2403 ,fact.emails_auto_uptd_sr_in_period = DECODE(nvl(fact.emails_auto_uptd_sr_in_period,0) + nvl(change.emails_auto_uptd_sr_in_period,0),
2404 0, NULL, nvl(fact.emails_auto_uptd_sr_in_period,0) + nvl(change.emails_auto_uptd_sr_in_period,0))
2405 ,fact.email_resp_time_in_period = DECODE(nvl(fact.email_resp_time_in_period,0) + nvl(change.email_resp_time_in_period,0),
2409 ,fact.sr_created_in_period = DECODE(nvl(fact.sr_created_in_period,0) + nvl(change.sr_created_in_period,0),
2406 0, NULL, nvl(fact.email_resp_time_in_period,0) + nvl(change.email_resp_time_in_period,0))
2407 ,fact.agent_resp_time_in_period = DECODE(nvl(fact.agent_resp_time_in_period,0) + nvl(change.agent_resp_time_in_period,0),
2408 0, NULL, nvl(fact.agent_resp_time_in_period,0) + nvl(change.agent_resp_time_in_period,0))
2410 0, NULL, nvl(fact.sr_created_in_period,0) + nvl(change.sr_created_in_period,0))
2411 ,fact.emails_rsl_and_trfd_in_period = DECODE(nvl(fact.emails_rsl_and_trfd_in_period,0) + nvl(change.emails_rsl_and_trfd_in_period,0),
2412 0, NULL, nvl(fact.emails_rsl_and_trfd_in_period,0) + nvl(change.emails_rsl_and_trfd_in_period,0))
2413 ,fact.emails_orr_count_in_period = DECODE(nvl(fact.emails_orr_count_in_period,0) + nvl(change.emails_orr_count_in_period,0),
2414 0, NULL, nvl(fact.emails_orr_count_in_period,0) + nvl(change.emails_orr_count_in_period,0))
2415 ,fact.EMAILS_AUTO_REPLIED_IN_PERIOD = DECODE(nvl(fact.EMAILS_AUTO_REPLIED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_REPLIED_IN_PERIOD,0),
2416 0, NULL, nvl(fact.EMAILS_AUTO_REPLIED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_REPLIED_IN_PERIOD,0))
2417 ,fact.EMAILS_AUTO_DELETED_IN_PERIOD = DECODE(nvl(fact.EMAILS_AUTO_DELETED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_DELETED_IN_PERIOD,0),
2418 0, NULL, nvl(fact.EMAILS_AUTO_DELETED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_DELETED_IN_PERIOD,0))
2419 ,fact.EMAILS_AUTO_RESOLVED_IN_PERIOD = DECODE(nvl(fact.EMAILS_AUTO_RESOLVED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_RESOLVED_IN_PERIOD,
2420 0), 0, NULL, nvl(fact.EMAILS_AUTO_RESOLVED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_RESOLVED_IN_PERIOD,0))
2421 ,fact.emails_composed_in_period = DECODE(nvl(fact.emails_composed_in_period,0) + nvl(change.emails_composed_in_period,0),
2422 0, NULL, nvl(fact.emails_composed_in_period,0) + nvl(change.emails_composed_in_period,0))
2423 --
2424 --Note that accumulated measures are not added together - they are replaced by the new
2425 --calculated value as they are not additive.
2426 --
2427 ,fact.accumulated_open_emails = decode(change.accumulated_open_emails,0,to_number(NULL),change.accumulated_open_emails)
2428 ,fact.accumulated_emails_in_queue = decode(change.accumulated_emails_in_queue,0,to_number(NULL),change.accumulated_emails_in_queue)
2429 ,fact.accumulated_emails_one_day = decode(change.accumulated_emails_one_day,0,to_number(NULL),change.accumulated_emails_one_day)
2430 ,fact.accumulated_emails_three_days = decode(change.accumulated_emails_three_days,0,to_number(NULL),change.accumulated_emails_three_days)
2431 ,fact.accumulated_emails_week = decode(change.accumulated_emails_week,0,to_number(NULL),change.accumulated_emails_week)
2432 ,fact.accumulated_emails_week_plus = decode(change.accumulated_emails_week_plus,0,to_number(NULL),change.accumulated_emails_week_plus)
2433 ,fact.last_updated_by = change.last_updated_by
2434 ,fact.last_update_date = change.last_update_date
2435 ,fact.emails_rerouted_in_period = DECODE(nvl(fact.emails_rerouted_in_period,0) + nvl(change.emails_rerouted_in_period,0),
2436 0, NULL, nvl(fact.emails_rerouted_in_period,0) + nvl(change.emails_rerouted_in_period,0))
2437 ,fact.leads_created_in_period = DECODE(nvl(fact.leads_created_in_period,0) + nvl(change.leads_created_in_period,0),
2438 0, NULL, nvl(fact.leads_created_in_period,0) + nvl(change.leads_created_in_period,0))
2439 WHEN NOT MATCHED THEN
2440 INSERT (
2441 fact.email_account_id,
2442 fact.email_classification_id,
2443 fact.agent_id,
2444 fact.party_id,
2445 fact.time_id,
2446 fact.period_type_id,
2447 fact.period_start_date,
2448 fact.period_start_time,
2449 fact.outcome_id,
2450 fact.result_id,
2451 fact.reason_id,
2452 fact.created_by,
2453 fact.creation_date,
2454 fact.last_updated_by,
2455 fact.last_update_date,
2456 fact.emails_offered_in_period,
2457 fact.emails_fetched_in_period,
2458 fact.emails_replied_in_period,
2459 fact.emails_rpld_by_goal_in_period,
2460 fact.AGENT_EMAILS_RPLD_BY_GOAL,
2461 fact.emails_deleted_in_period,
2462 fact.emails_trnsfrd_out_in_period,
2463 fact.emails_trnsfrd_in_in_period,
2464 fact.emails_assigned_in_period,
2465 fact.emails_auto_routed_in_period,
2466 fact.emails_auto_uptd_sr_in_period,
2467 fact.email_resp_time_in_period,
2468 fact.agent_resp_time_in_period,
2469 fact.sr_created_in_period,
2470 fact.emails_rsl_and_trfd_in_period,
2471 fact.emails_orr_count_in_period,
2472 fact.EMAILS_AUTO_REPLIED_IN_PERIOD,
2473 fact.EMAILS_AUTO_DELETED_IN_PERIOD,
2474 fact.EMAILS_AUTO_RESOLVED_IN_PERIOD,
2475 fact.emails_composed_in_period,
2476 fact.accumulated_open_emails,
2477 fact.accumulated_emails_in_queue,
2478 fact.accumulated_emails_one_day,
2479 fact.accumulated_emails_three_days,
2480 fact.accumulated_emails_week,
2481 fact.accumulated_emails_week_plus,
2482 fact.request_id,
2483 fact.program_application_id,
2484 fact.program_id,
2485 fact.program_update_date,
2486 fact.emails_rerouted_in_period,
2487 fact.leads_created_in_period )
2488 VALUES (
2489 change.email_account_id,
2490 change.email_classification_id,
2491 change.agent_id,
2492 change.party_id,
2493 change.time_id,
2494 change.period_type_id,
2495 change.period_start_date,
2496 change.period_start_time,
2500 change.created_by,
2497 change.outcome_id,
2498 change.result_id,
2499 change.reason_id,
2501 change.creation_date,
2502 change.last_updated_by,
2503 change.last_update_date,
2504 decode(change.emails_offered_in_period,0,to_number(null), change.emails_offered_in_period),
2505 decode(change.emails_fetched_in_period, 0,to_number(null),change.emails_fetched_in_period),
2506 decode(change.emails_replied_in_period, 0,to_number(null),change.emails_replied_in_period),
2507 decode(change.emails_rpld_by_goal_in_period, 0,to_number(null),change.emails_rpld_by_goal_in_period),
2508 decode(change.AGENT_EMAILS_RPLD_BY_GOAL, 0,to_number(null),change.AGENT_EMAILS_RPLD_BY_GOAL),
2509 decode(change.emails_deleted_in_period, 0,to_number(null),change.emails_deleted_in_period),
2510 decode(change.emails_trnsfrd_out_in_period, 0,to_number(null),change.emails_trnsfrd_out_in_period),
2511 decode(change.emails_trnsfrd_in_in_period, 0,to_number(null),change.emails_trnsfrd_in_in_period),
2512 decode(change.emails_assigned_in_period, 0,to_number(null),change.emails_assigned_in_period),
2513 decode(change.emails_auto_routed_in_period, 0,to_number(null),change.emails_auto_routed_in_period),
2514 decode(change.emails_auto_uptd_sr_in_period, 0,to_number(null),change.emails_auto_uptd_sr_in_period),
2515 decode(change.email_resp_time_in_period, 0,to_number(null),change.email_resp_time_in_period),
2516 decode(change.agent_resp_time_in_period, 0,to_number(null),change.agent_resp_time_in_period),
2517 decode(change.sr_created_in_period, 0,to_number(null),change.sr_created_in_period),
2518 decode(change.emails_rsl_and_trfd_in_period, 0,to_number(null),change.emails_rsl_and_trfd_in_period),
2519 decode(change.emails_orr_count_in_period, 0,to_number(null),change.emails_orr_count_in_period),
2520 decode(change.EMAILS_AUTO_REPLIED_IN_PERIOD, 0,to_number(null),change.EMAILS_AUTO_REPLIED_IN_PERIOD),
2521 decode(change.EMAILS_AUTO_DELETED_IN_PERIOD, 0,to_number(null),change.EMAILS_AUTO_DELETED_IN_PERIOD),
2522 decode(change.EMAILS_AUTO_RESOLVED_IN_PERIOD, 0,to_number(null),change.EMAILS_AUTO_RESOLVED_IN_PERIOD),
2523 decode(change.emails_composed_in_period, 0,to_number(null),change.emails_composed_in_period),
2524 decode(change.accumulated_open_emails, 0,to_number(null),change.accumulated_open_emails),
2525 decode(change.accumulated_emails_in_queue, 0,to_number(null),change.accumulated_emails_in_queue),
2526 decode(change.accumulated_emails_one_day, 0,to_number(null),change.accumulated_emails_one_day),
2527 decode(change.accumulated_emails_three_days, 0,to_number(null),change.accumulated_emails_three_days),
2528 decode(change.accumulated_emails_week, 0,to_number(null),change.accumulated_emails_week),
2529 decode(change.accumulated_emails_week_plus, 0,to_number(null),change.accumulated_emails_week_plus),
2530 change.request_id,
2531 change.program_application_id,
2532 change.program_id,
2533 change.program_update_date,
2534 decode(change.emails_rerouted_in_period, 0,to_number(null),change.emails_rerouted_in_period),
2535 decode(change.leads_created_in_period, 0,to_number(null),change.leads_created_in_period)
2536 );
2537
2538 write_log('Number of rows updated in table bix_email_details_stg for Emails Resolved and Transferred in period ' || to_char(SQL%ROWCOUNT));
2539
2540
2541
2542
2543
2544 MERGE INTO BIX_EMAIL_DETAILS_STG fact
2545 USING
2546 (SELECT
2547 inv2.email_account_id
2548 email_account_id,
2549 inv2.email_classification_id
2550 email_classification_id,
2551 inv2.agent_id
2552 agent_id,
2553 inv2.party_id
2554 party_id,
2555 inv2.time_id
2556 time_id,
2557 1 period_type_id,
2558 inv2.period_start_date
2559 period_start_date,
2560 inv2.period_start_time
2561 period_start_time,
2562 inv2.outcome_id
2563 outcome_id,
2564 inv2.result_id
2565 result_id,
2566 inv2.reason_id
2567 reason_id,
2568 g_user_id
2569 created_by,
2570 g_sysdate
2571 creation_date,
2572 g_user_id
2573 last_updated_by,
2574 g_sysdate
2575 last_update_date,
2576 0
2577 emails_offered_in_period,
2578 0
2579 emails_fetched_in_period,
2580 0
2581 emails_replied_in_period,
2582 0
2583 emails_rpld_by_goal_in_period,
2584 0
2585 AGENT_EMAILS_RPLD_BY_GOAL,
2586 0
2587 emails_deleted_in_period,
2588 0
2589 emails_trnsfrd_out_in_period,
2590 0
2591 emails_trnsfrd_in_in_period,
2592 0
2593 emails_assigned_in_period,
2594 0
2595 emails_auto_routed_in_period,
2596 0
2597 emails_auto_uptd_sr_in_period,
2598 0
2599 email_resp_time_in_period,
2600 0
2601 agent_resp_time_in_period,
2602 0
2603 sr_created_in_period,
2604 0
2605 emails_rsl_and_trfd_in_period,
2606 0
2607 EMAILS_AUTO_REPLIED_IN_PERIOD,
2608 0
2609 EMAILS_AUTO_DELETED_IN_PERIOD,
2610 0
2611 EMAILS_AUTO_RESOLVED_IN_PERIOD,
2612 0
2613 emails_composed_in_period,
2614 decode(sum(emails_orr_count_in_period), 0, to_number(null), sum(emails_orr_count_in_period))
2615 emails_orr_count_in_period,
2616 0
2617 accumulated_open_emails,
2618 0
2622 0
2619 accumulated_emails_in_queue,
2620 0
2621 accumulated_emails_one_day,
2623 accumulated_emails_three_days,
2624 0
2625 accumulated_emails_week,
2626 0
2627 accumulated_emails_week_plus,
2628 0
2629 LEADS_CREATED_IN_PERIOD,
2630 0
2631 EMAILS_REROUTED_IN_PERIOD,
2632 g_request_id
2633 request_id,
2634 g_program_appl_id
2635 program_application_id,
2636 g_program_id
2637 program_id,
2638 g_sysdate
2639 program_update_date
2640 FROM
2641 (
2642
2643 /* Query 5 */
2644 SELECT
2645 nvl(email_account_id, -1) EMAIL_ACCOUNT_ID,
2646 nvl(email_classification_id, -1) EMAIL_CLASSIFICATION_ID,
2647 nvl(agent_id, -1) AGENT_ID,
2648 nvl(party_id, -1) PARTY_ID,
2649 trunc(period_start_date) PERIOD_START_DATE,
2650 time_id TIME_ID,
2651 '00:00' PERIOD_START_TIME,
2652 NVL(outcome_id,-1) OUTCOME_ID,
2653 NVL(result_id,-1) RESULT_ID,
2654 NVL(reason_id,-1) REASON_ID,
2655 0 EMAILS_OFFERED_IN_PERIOD,
2656 0 EMAILS_FETCHED_IN_PERIOD,
2657 0 EMAILS_REPLIED_IN_PERIOD,
2658 0 AGENT_RESP_TIME_IN_PERIOD,
2659 0 EMAILS_RPLD_BY_GOAL_IN_PERIOD,
2660 0 AGENT_EMAILS_RPLD_BY_GOAL,
2661 0 EMAILS_TRNSFRD_OUT_IN_PERIOD,
2662 0 EMAILS_TRNSFRD_IN_IN_PERIOD,
2663 0 EMAILS_ASSIGNED_IN_PERIOD,
2664 0 EMAILS_AUTO_ROUTED_IN_PERIOD,
2665 0 EMAILS_AUTO_UPTD_SR_IN_PERIOD,
2666 0 EMAILS_DELETED_IN_PERIOD,
2667 0 EMAIL_RESP_TIME_IN_PERIOD,
2668 0 SR_CREATED_IN_PERIOD,
2669 0 EMAILS_RSL_AND_TRFD_IN_PERIOD,
2670 0 EMAILS_AUTO_REPLIED_IN_PERIOD,
2671 0 EMAILS_AUTO_DELETED_IN_PERIOD,
2672 0 EMAILS_AUTO_RESOLVED_IN_PERIOD,
2673 0 emails_composed_in_period,
2674 COUNT(DISTINCT interaction_id) emails_orr_count_in_period,
2675 0 accumulated_open_emails,
2676 0 accumulated_emails_in_queue,
2677 0 accumulated_emails_one_day,
2678 0 accumulated_emails_three_days,
2679 0 accumulated_emails_week,
2680 0 accumulated_emails_week_plus,
2681 0 EMAILS_REROUTED_IN_PERIOD,
2682 0 LEADS_CREATED_IN_PERIOD
2683 FROM
2684 (
2685 SELECT /*+ use_nl(intr,actv,mitm) */
2686 nvl(mitm.source_id, -1) EMAIL_ACCOUNT_ID,
2687 nvl(irc.route_classification_id, -1) EMAIL_CLASSIFICATION_ID,
2688 nvl(intr.resource_id, -1) AGENT_ID,
2689 nvl(first_value(intr.party_id)
2690 over(partition by actv.media_id
2691 order by actv.interaction_id desc
2692 ),
2693 -1) PARTY_ID,
2694 trunc(intr.last_update_date) PERIOD_START_DATE,
2695 to_number(to_char(intr.last_update_date, 'J')) TIME_ID,
2696 NVL(intr.outcome_id,-1) OUTCOME_ID,
2697 NVL(intr.result_id,-1) RESULT_ID,
2698 NVL(intr.reason_id,-1) REASON_ID,
2699 intr.interaction_id INTERACTION_ID
2700 FROM
2701 JTF_IH_MEDIA_ITEMS mitm,
2702 JTF_IH_ACTIVITIES actv,
2703 JTF_IH_INTERACTIONS intr,
2704 (
2705 select name, max(route_classification_id) route_classification_id
2706 from iem_route_classifications
2707 group by name
2708 ) irc
2709 WHERE mitm.MEDIA_ITEM_TYPE = 'EMAIL'
2710 AND mitm.direction = 'INBOUND'
2711 AND mitm.classification = irc.name(+)
2712 AND mitm.media_id = actv.media_id
2713 AND actv.interaction_id = intr.interaction_id
2714 AND intr.LAST_UPDATE_DATE BETWEEN g_collect_start_date and g_collect_end_date
2715 AND intr.outcome_id IS NOT NULL
2716 )
2717 GROUP BY
2718 nvl(email_account_id, -1),
2719 nvl(email_classification_id, -1),
2723 time_id,
2720 nvl(agent_id, -1),
2721 nvl(party_id, -1),
2722 trunc(period_start_date),
2724 NVL(outcome_id,-1),
2725 NVL(result_id,-1),
2726 NVL(reason_id,-1)
2727
2728 )inv2
2729 GROUP BY
2730 inv2.email_account_id,
2731 inv2.email_classification_id,
2732 inv2.agent_id,
2733 inv2.party_id,
2734 inv2.time_id,
2735 inv2.period_start_date,
2736 inv2.period_start_time,
2737 inv2.outcome_id,
2738 inv2.result_id,
2739 inv2.reason_id
2740 ) change
2741 ON (
2742 fact.email_account_id = change.email_account_id
2743 AND fact.email_classification_id = change.email_classification_id
2744 AND fact.agent_id = change.agent_id
2745 AND fact.party_id = change.party_id
2746 AND fact.time_id = change.time_id
2747 AND fact.period_type_id = change.period_type_id
2748 AND fact.period_start_date = change.period_start_date
2749 AND fact.period_start_time = change.period_start_time
2750 AND fact.outcome_id = change.outcome_id
2751 AND fact.result_id = change.result_id
2752 AND fact.reason_id = change.reason_id )
2753 WHEN MATCHED THEN
2754 UPDATE
2755 SET fact.emails_offered_in_period = DECODE(nvl(fact.emails_offered_in_period,0) + nvl(change.emails_offered_in_period,0),
2756 0, NULL, nvl(fact.emails_offered_in_period,0) + nvl(change.emails_offered_in_period,0))
2757 ,fact.emails_fetched_in_period = DECODE(nvl(fact.emails_fetched_in_period,0) + nvl(change.emails_fetched_in_period,0),
2758 0, NULL, nvl(fact.emails_fetched_in_period,0) + nvl(change.emails_fetched_in_period,0))
2759 ,fact.emails_replied_in_period = DECODE(nvl(fact.emails_replied_in_period,0) + nvl(change.emails_replied_in_period,0),
2760 0, NULL, nvl(fact.emails_replied_in_period,0) + nvl(change.emails_replied_in_period,0))
2761 ,fact.emails_rpld_by_goal_in_period = DECODE(nvl(fact.emails_rpld_by_goal_in_period,0) + nvl(change.emails_rpld_by_goal_in_period,
2762 0), 0, NULL, nvl(fact.emails_rpld_by_goal_in_period,0) + nvl(change.emails_rpld_by_goal_in_period,0))
2763 ,fact.AGENT_EMAILS_RPLD_BY_GOAL = DECODE(nvl(fact.AGENT_EMAILS_RPLD_BY_GOAL,0) + nvl(change.AGENT_EMAILS_RPLD_BY_GOAL,
2764 0), 0, NULL, nvl(fact.AGENT_EMAILS_RPLD_BY_GOAL,0) + nvl(change.AGENT_EMAILS_RPLD_BY_GOAL,0))
2765 ,fact.emails_deleted_in_period = DECODE(nvl(fact.emails_deleted_in_period,0) + nvl(change.emails_deleted_in_period,0), 0, NULL,
2766 nvl(fact.emails_deleted_in_period,0) + nvl(change.emails_deleted_in_period,0))
2767 ,fact.emails_trnsfrd_out_in_period = DECODE(nvl(fact.emails_trnsfrd_out_in_period,0) + nvl(change.emails_trnsfrd_out_in_period,0),
2768 0, NULL, nvl(fact.emails_trnsfrd_out_in_period,0) + nvl(change.emails_trnsfrd_out_in_period,0))
2769 ,fact.emails_trnsfrd_in_in_period = DECODE(nvl(fact.emails_trnsfrd_in_in_period,0) + nvl(change.emails_trnsfrd_in_in_period,0),
2770 0, NULL, nvl(fact.emails_trnsfrd_in_in_period,0) + nvl(change.emails_trnsfrd_in_in_period,0))
2771 ,fact.emails_assigned_in_period = DECODE(nvl(fact.emails_assigned_in_period,0) + nvl(change.emails_assigned_in_period,0),
2772 0, NULL, nvl(fact.emails_assigned_in_period,0) + nvl(change.emails_assigned_in_period,0))
2773 ,fact.emails_auto_routed_in_period = DECODE(nvl(fact.emails_auto_routed_in_period,0) + nvl(change.emails_auto_routed_in_period,0),
2774 0, NULL, nvl(fact.emails_auto_routed_in_period,0) + nvl(change.emails_auto_routed_in_period,0))
2775 ,fact.emails_auto_uptd_sr_in_period = DECODE(nvl(fact.emails_auto_uptd_sr_in_period,0) + nvl(change.emails_auto_uptd_sr_in_period,0),
2776 0, NULL, nvl(fact.emails_auto_uptd_sr_in_period,0) + nvl(change.emails_auto_uptd_sr_in_period,0))
2777 ,fact.email_resp_time_in_period = DECODE(nvl(fact.email_resp_time_in_period,0) + nvl(change.email_resp_time_in_period,0),
2778 0, NULL, nvl(fact.email_resp_time_in_period,0) + nvl(change.email_resp_time_in_period,0))
2779 ,fact.agent_resp_time_in_period = DECODE(nvl(fact.agent_resp_time_in_period,0) + nvl(change.agent_resp_time_in_period,0),
2780 0, NULL, nvl(fact.agent_resp_time_in_period,0) + nvl(change.agent_resp_time_in_period,0))
2781 ,fact.sr_created_in_period = DECODE(nvl(fact.sr_created_in_period,0) + nvl(change.sr_created_in_period,0),
2782 0, NULL, nvl(fact.sr_created_in_period,0) + nvl(change.sr_created_in_period,0))
2783 ,fact.emails_rsl_and_trfd_in_period = DECODE(nvl(fact.emails_rsl_and_trfd_in_period,0) + nvl(change.emails_rsl_and_trfd_in_period,0),
2784 0, NULL, nvl(fact.emails_rsl_and_trfd_in_period,0) + nvl(change.emails_rsl_and_trfd_in_period,0))
2785 ,fact.emails_orr_count_in_period = DECODE(nvl(fact.emails_orr_count_in_period,0) + nvl(change.emails_orr_count_in_period,0),
2786 0, NULL, nvl(fact.emails_orr_count_in_period,0) + nvl(change.emails_orr_count_in_period,0))
2787 ,fact.EMAILS_AUTO_REPLIED_IN_PERIOD = DECODE(nvl(fact.EMAILS_AUTO_REPLIED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_REPLIED_IN_PERIOD,0),
2788 0, NULL, nvl(fact.EMAILS_AUTO_REPLIED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_REPLIED_IN_PERIOD,0))
2789 ,fact.EMAILS_AUTO_DELETED_IN_PERIOD = DECODE(nvl(fact.EMAILS_AUTO_DELETED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_DELETED_IN_PERIOD,0),
2790 0, NULL, nvl(fact.EMAILS_AUTO_DELETED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_DELETED_IN_PERIOD,0))
2791 ,fact.EMAILS_AUTO_RESOLVED_IN_PERIOD = DECODE(nvl(fact.EMAILS_AUTO_RESOLVED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_RESOLVED_IN_PERIOD,
2792 0), 0, NULL, nvl(fact.EMAILS_AUTO_RESOLVED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_RESOLVED_IN_PERIOD,0))
2793 ,fact.emails_composed_in_period = DECODE(nvl(fact.emails_composed_in_period,0) + nvl(change.emails_composed_in_period,0),
2794 0, NULL, nvl(fact.emails_composed_in_period,0) + nvl(change.emails_composed_in_period,0))
2795 --
2796 --Note that accumulated measures are not added together - they are replaced by the new
2797 --calculated value as they are not additive.
2798 --
2799 ,fact.accumulated_open_emails = decode(change.accumulated_open_emails,0,to_number(NULL),change.accumulated_open_emails)
2800 ,fact.accumulated_emails_in_queue = decode(change.accumulated_emails_in_queue,0,to_number(NULL),change.accumulated_emails_in_queue)
2801 ,fact.accumulated_emails_one_day = decode(change.accumulated_emails_one_day,0,to_number(NULL),change.accumulated_emails_one_day)
2802 ,fact.accumulated_emails_three_days = decode(change.accumulated_emails_three_days,0,to_number(NULL),change.accumulated_emails_three_days)
2803 ,fact.accumulated_emails_week = decode(change.accumulated_emails_week,0,to_number(NULL),change.accumulated_emails_week)
2804 ,fact.accumulated_emails_week_plus = decode(change.accumulated_emails_week_plus,0,to_number(NULL),change.accumulated_emails_week_plus)
2805 ,fact.last_updated_by = change.last_updated_by
2806 ,fact.last_update_date = change.last_update_date
2807 ,fact.emails_rerouted_in_period = DECODE(nvl(fact.emails_rerouted_in_period,0) + nvl(change.emails_rerouted_in_period,0),
2808 0, NULL, nvl(fact.emails_rerouted_in_period,0) + nvl(change.emails_rerouted_in_period,0))
2809 ,fact.leads_created_in_period = DECODE(nvl(fact.leads_created_in_period,0) + nvl(change.leads_created_in_period,0),
2810 0, NULL, nvl(fact.leads_created_in_period,0) + nvl(change.leads_created_in_period,0))
2811 WHEN NOT MATCHED THEN
2812 INSERT (
2813 fact.email_account_id,
2814 fact.email_classification_id,
2815 fact.agent_id,
2816 fact.party_id,
2817 fact.time_id,
2818 fact.period_type_id,
2819 fact.period_start_date,
2820 fact.period_start_time,
2821 fact.outcome_id,
2822 fact.result_id,
2823 fact.reason_id,
2824 fact.created_by,
2825 fact.creation_date,
2826 fact.last_updated_by,
2827 fact.last_update_date,
2828 fact.emails_offered_in_period,
2829 fact.emails_fetched_in_period,
2830 fact.emails_replied_in_period,
2831 fact.emails_rpld_by_goal_in_period,
2832 fact.AGENT_EMAILS_RPLD_BY_GOAL,
2836 fact.emails_assigned_in_period,
2833 fact.emails_deleted_in_period,
2834 fact.emails_trnsfrd_out_in_period,
2835 fact.emails_trnsfrd_in_in_period,
2837 fact.emails_auto_routed_in_period,
2838 fact.emails_auto_uptd_sr_in_period,
2839 fact.email_resp_time_in_period,
2840 fact.agent_resp_time_in_period,
2841 fact.sr_created_in_period,
2842 fact.emails_rsl_and_trfd_in_period,
2843 fact.emails_orr_count_in_period,
2844 fact.EMAILS_AUTO_REPLIED_IN_PERIOD,
2845 fact.EMAILS_AUTO_DELETED_IN_PERIOD,
2846 fact.EMAILS_AUTO_RESOLVED_IN_PERIOD,
2847 fact.emails_composed_in_period,
2848 fact.accumulated_open_emails,
2849 fact.accumulated_emails_in_queue,
2850 fact.accumulated_emails_one_day,
2851 fact.accumulated_emails_three_days,
2852 fact.accumulated_emails_week,
2853 fact.accumulated_emails_week_plus,
2854 fact.request_id,
2855 fact.program_application_id,
2856 fact.program_id,
2857 fact.program_update_date,
2858 fact.emails_rerouted_in_period,
2859 fact.leads_created_in_period )
2860 VALUES (
2861 change.email_account_id,
2862 change.email_classification_id,
2863 change.agent_id,
2864 change.party_id,
2865 change.time_id,
2866 change.period_type_id,
2867 change.period_start_date,
2868 change.period_start_time,
2869 change.outcome_id,
2870 change.result_id,
2871 change.reason_id,
2872 change.created_by,
2873 change.creation_date,
2874 change.last_updated_by,
2875 change.last_update_date,
2876 decode(change.emails_offered_in_period,0,to_number(null), change.emails_offered_in_period),
2877 decode(change.emails_fetched_in_period, 0,to_number(null),change.emails_fetched_in_period),
2878 decode(change.emails_replied_in_period, 0,to_number(null),change.emails_replied_in_period),
2879 decode(change.emails_rpld_by_goal_in_period, 0,to_number(null),change.emails_rpld_by_goal_in_period),
2880 decode(change.AGENT_EMAILS_RPLD_BY_GOAL, 0,to_number(null),change.AGENT_EMAILS_RPLD_BY_GOAL),
2881 decode(change.emails_deleted_in_period, 0,to_number(null),change.emails_deleted_in_period),
2882 decode(change.emails_trnsfrd_out_in_period, 0,to_number(null),change.emails_trnsfrd_out_in_period),
2883 decode(change.emails_trnsfrd_in_in_period, 0,to_number(null),change.emails_trnsfrd_in_in_period),
2884 decode(change.emails_assigned_in_period, 0,to_number(null),change.emails_assigned_in_period),
2885 decode(change.emails_auto_routed_in_period, 0,to_number(null),change.emails_auto_routed_in_period),
2886 decode(change.emails_auto_uptd_sr_in_period, 0,to_number(null),change.emails_auto_uptd_sr_in_period),
2887 decode(change.email_resp_time_in_period, 0,to_number(null),change.email_resp_time_in_period),
2888 decode(change.agent_resp_time_in_period, 0,to_number(null),change.agent_resp_time_in_period),
2889 decode(change.sr_created_in_period, 0,to_number(null),change.sr_created_in_period),
2890 decode(change.emails_rsl_and_trfd_in_period, 0,to_number(null),change.emails_rsl_and_trfd_in_period),
2891 decode(change.emails_orr_count_in_period, 0,to_number(null),change.emails_orr_count_in_period),
2892 decode(change.EMAILS_AUTO_REPLIED_IN_PERIOD, 0,to_number(null),change.EMAILS_AUTO_REPLIED_IN_PERIOD),
2893 decode(change.EMAILS_AUTO_DELETED_IN_PERIOD, 0,to_number(null),change.EMAILS_AUTO_DELETED_IN_PERIOD),
2894 decode(change.EMAILS_AUTO_RESOLVED_IN_PERIOD, 0,to_number(null),change.EMAILS_AUTO_RESOLVED_IN_PERIOD),
2895 decode(change.emails_composed_in_period, 0,to_number(null),change.emails_composed_in_period),
2896 decode(change.accumulated_open_emails, 0,to_number(null),change.accumulated_open_emails),
2897 decode(change.accumulated_emails_in_queue, 0,to_number(null),change.accumulated_emails_in_queue),
2898 decode(change.accumulated_emails_one_day, 0,to_number(null),change.accumulated_emails_one_day),
2899 decode(change.accumulated_emails_three_days, 0,to_number(null),change.accumulated_emails_three_days),
2900 decode(change.accumulated_emails_week, 0,to_number(null),change.accumulated_emails_week),
2901 decode(change.accumulated_emails_week_plus, 0,to_number(null),change.accumulated_emails_week_plus),
2902 change.request_id,
2903 change.program_application_id,
2904 change.program_id,
2905 change.program_update_date,
2906 decode(change.emails_rerouted_in_period, 0,to_number(null),change.emails_rerouted_in_period),
2907 decode(change.leads_created_in_period, 0,to_number(null),change.leads_created_in_period)
2908 );
2909
2910 write_log('Number of rows updated in table bix_email_details_stg for Emails ORR count ' || to_char(SQL%ROWCOUNT));
2911
2912
2913
2914 MERGE INTO BIX_EMAIL_DETAILS_STG fact
2915 USING
2916 (SELECT
2917 inv2.email_account_id
2918 email_account_id,
2919 inv2.email_classification_id
2920 email_classification_id,
2921 inv2.agent_id
2922 agent_id,
2923 inv2.party_id
2924 party_id,
2925 inv2.time_id
2926 time_id,
2927 1 period_type_id,
2928 inv2.period_start_date
2929 period_start_date,
2930 inv2.period_start_time
2931 period_start_time,
2932 inv2.outcome_id
2933 outcome_id,
2934 inv2.result_id
2935 result_id,
2936 inv2.reason_id
2937 reason_id,
2938 g_user_id
2939 created_by,
2940 g_sysdate
2941 creation_date,
2942 g_user_id
2943 last_updated_by,
2944 g_sysdate
2945 last_update_date,
2946 decode(sum(inv2.emails_offered_in_period), 0, to_number(null), sum(inv2.emails_offered_in_period))
2947 emails_offered_in_period,
2948 decode(sum(inv2.emails_fetched_in_period), 0, to_number(null), sum(inv2.emails_fetched_in_period))
2949 emails_fetched_in_period,
2950 decode(sum(inv2.emails_replied_in_period), 0, to_number(null), sum(inv2.emails_replied_in_period))
2951 emails_replied_in_period,
2952 decode(sum(inv2.emails_rpld_by_goal_in_period), 0, to_number(null), sum(inv2.emails_rpld_by_goal_in_period))
2953 emails_rpld_by_goal_in_period,
2954 decode(sum(inv2.AGENT_EMAILS_RPLD_BY_GOAL), 0, to_number(null), sum(inv2.AGENT_EMAILS_RPLD_BY_GOAL))
2955 AGENT_EMAILS_RPLD_BY_GOAL,
2956 decode(sum(inv2.emails_deleted_in_period), 0, to_number(null), sum(inv2.emails_deleted_in_period))
2957 emails_deleted_in_period,
2958 decode(sum(inv2.emails_trnsfrd_out_in_period), 0, to_number(null), sum(inv2.emails_trnsfrd_out_in_period))
2959 emails_trnsfrd_out_in_period,
2960 decode(sum(inv2.emails_trnsfrd_in_in_period), 0, to_number(null), sum(inv2.emails_trnsfrd_in_in_period))
2961 emails_trnsfrd_in_in_period,
2962 decode(sum(inv2.emails_assigned_in_period), 0, to_number(null), sum(inv2.emails_assigned_in_period))
2963 emails_assigned_in_period,
2964 decode(sum(inv2.emails_auto_routed_in_period), 0, to_number(null), sum(inv2.emails_auto_routed_in_period))
2965 emails_auto_routed_in_period,
2966 decode(sum(inv2.emails_auto_uptd_sr_in_period), 0, to_number(null), sum(inv2.emails_auto_uptd_sr_in_period))
2967 emails_auto_uptd_sr_in_period,
2968 decode(round(sum(inv2.email_resp_time_in_period)), 0, to_number(null), round(sum(inv2.email_resp_time_in_period)))
2969 email_resp_time_in_period,
2970 decode(round(sum(inv2.agent_resp_time_in_period)), 0, to_number(null), round(sum(inv2.agent_resp_time_in_period)))
2971 agent_resp_time_in_period,
2972 decode(sum(inv2.sr_created_in_period), 0, to_number(null), sum(inv2.sr_created_in_period))
2973 sr_created_in_period,
2974 decode(sum(inv2.emails_rsl_and_trfd_in_period), 0, to_number(null), sum(inv2.emails_rsl_and_trfd_in_period))
2975 emails_rsl_and_trfd_in_period,
2976 decode(sum(EMAILS_AUTO_REPLIED_IN_PERIOD), 0, to_number(null), sum(EMAILS_AUTO_REPLIED_IN_PERIOD))
2977 EMAILS_AUTO_REPLIED_IN_PERIOD,
2978 decode(sum(EMAILS_AUTO_DELETED_IN_PERIOD), 0, to_number(null), sum(EMAILS_AUTO_DELETED_IN_PERIOD))
2979 EMAILS_AUTO_DELETED_IN_PERIOD,
2980 decode(sum(EMAILS_AUTO_RESOLVED_IN_PERIOD), 0, to_number(null), sum(EMAILS_AUTO_RESOLVED_IN_PERIOD))
2981 EMAILS_AUTO_RESOLVED_IN_PERIOD,
2982 decode(sum(emails_composed_in_period), 0, to_number(null), sum(emails_composed_in_period))
2983 emails_composed_in_period,
2984 decode(sum(emails_orr_count_in_period), 0, to_number(null), sum(emails_orr_count_in_period))
2985 emails_orr_count_in_period,
2986 decode(sum(accumulated_open_emails), 0, to_number(null), sum(accumulated_open_emails))
2987 accumulated_open_emails,
2988 decode(sum(accumulated_emails_in_queue), 0, to_number(null), sum(accumulated_emails_in_queue))
2989 accumulated_emails_in_queue,
2990 decode(sum(accumulated_emails_one_day), 0, to_number(null), sum(accumulated_emails_one_day))
2991 accumulated_emails_one_day,
2992 decode(sum(accumulated_emails_three_days), 0, to_number(null), sum(accumulated_emails_three_days))
2993 accumulated_emails_three_days,
2994 decode(sum(accumulated_emails_week), 0, to_number(null), sum(accumulated_emails_week))
2995 accumulated_emails_week,
2996 decode(sum(accumulated_emails_week_plus), 0, to_number(null), sum(accumulated_emails_week_plus))
2997 accumulated_emails_week_plus,
2998 decode(sum(LEADS_CREATED_IN_PERIOD), 0, to_number(null), sum(LEADS_CREATED_IN_PERIOD))
2999 LEADS_CREATED_IN_PERIOD,
3000 decode(sum(EMAILS_REROUTED_IN_PERIOD), 0, to_number(null), sum(EMAILS_REROUTED_IN_PERIOD))
3001 EMAILS_REROUTED_IN_PERIOD,
3002 g_request_id
3003 request_id,
3004 g_program_appl_id
3005 program_application_id,
3006 g_program_id
3007 program_id,
3008 g_sysdate
3009 program_update_date
3010 FROM
3011 (
3012 /* Query 6 */
3013 SELECT /*+ use_nl(intr,actv,segs,mitm) */
3014 nvl(mitm.source_id, -1) EMAIL_ACCOUNT_ID,
3015 nvl(irc.route_classification_id, -1) EMAIL_CLASSIFICATION_ID,
3016 nvl(intr.resource_id, -1) AGENT_ID,
3017 nvl(intr.party_id, -1) PARTY_ID,
3018 trunc(intr.last_update_date) PERIOD_START_DATE,
3019 to_number(to_char(intr.last_update_date, 'J')) TIME_ID,
3020 '00:00' PERIOD_START_TIME,
3021 NVL(intr.outcome_id,-1) OUTCOME_ID,
3022 NVL(intr.result_id,-1) RESULT_ID,
3023 NVL(intr.reason_id,-1) REASON_ID,
3024 0 EMAILS_OFFERED_IN_PERIOD,
3025 0 EMAILS_FETCHED_IN_PERIOD,
3026 0 EMAILS_REPLIED_IN_PERIOD,
3027 0 AGENT_RESP_TIME_IN_PERIOD,
3028 0 EMAILS_RPLD_BY_GOAL_IN_PERIOD,
3029 0 AGENT_EMAILS_RPLD_BY_GOAL,
3030 0 EMAILS_TRNSFRD_OUT_IN_PERIOD,
3031 0 EMAILS_TRNSFRD_IN_IN_PERIOD,
3032 0 EMAILS_ASSIGNED_IN_PERIOD,
3033 0 EMAILS_AUTO_ROUTED_IN_PERIOD,
3034 0 EMAILS_AUTO_UPTD_SR_IN_PERIOD,
3035 0 EMAILS_DELETED_IN_PERIOD,
3036 0 EMAIL_RESP_TIME_IN_PERIOD,
3037 0 SR_CREATED_IN_PERIOD,
3038 0 EMAILS_RSL_AND_TRFD_IN_PERIOD,
3039 0 EMAILS_AUTO_REPLIED_IN_PERIOD,
3040 0 EMAILS_AUTO_DELETED_IN_PERIOD,
3041 0 EMAILS_AUTO_RESOLVED_IN_PERIOD,
3042 COUNT(distinct mitm.media_id) emails_composed_in_period,
3043 COUNT(DISTINCT intr.interaction_id) emails_orr_count_in_period,
3044 0 accumulated_open_emails,
3045 0 accumulated_emails_in_queue,
3046 0 accumulated_emails_one_day,
3047 0 accumulated_emails_three_days,
3048 0 accumulated_emails_week,
3049 0 accumulated_emails_week_plus,
3050 0 EMAILS_REROUTED_IN_PERIOD,
3051 0 LEADS_CREATED_IN_PERIOD
3052 FROM
3053 JTF_IH_MEDIA_ITEMS mitm,
3054 JTF_IH_MEDIA_ITEM_LC_SEGS segs,
3055 JTF_IH_MEDIA_ITM_LC_SEG_TYS seg_type,
3056 JTF_IH_ACTIVITIES actv,
3057 JTF_IH_INTERACTIONS intr,
3058 --
3059 --Changes for R12
3060 --
3061 (
3062 select name, max(route_classification_id) route_classification_id
3063 from iem_route_classifications
3064 group by name
3065 ) irc
3066 WHERE mitm.MEDIA_ITEM_TYPE = 'EMAIL'
3067 AND mitm.direction = 'OUTBOUND'
3068 AND mitm.media_id = segs.media_id
3069 AND segs.milcs_type_id = seg_type.milcs_type_id
3070 AND seg_type.milcs_code = 'EMAIL_COMPOSE'
3071 AND mitm.classification = irc.name(+)
3072 -- AND mitm.media_id = actv.media_id
3073 AND segs.media_id = actv.media_id
3074 AND actv.interaction_id = intr.interaction_id
3075 AND intr.LAST_UPDATE_DATE BETWEEN g_collect_start_date and g_collect_end_date
3076 AND intr.outcome_id IS NOT NULL
3077 GROUP BY
3078 nvl(mitm.source_id, -1),
3079 nvl(irc.route_classification_id, -1),
3080 nvl(intr.resource_id, -1),
3081 nvl(intr.party_id, -1),
3082 trunc(intr.last_update_date),
3083 to_number(to_char(intr.last_update_date, 'J')),
3084 NVL(intr.outcome_id,-1),
3085 NVL(intr.result_id,-1),
3086 NVL(intr.reason_id,-1)
3087 )inv2
3088 GROUP BY
3089 inv2.email_account_id,
3090 inv2.email_classification_id,
3091 inv2.agent_id,
3092 inv2.party_id,
3093 inv2.time_id,
3094 inv2.period_start_date,
3098 inv2.reason_id
3095 inv2.period_start_time,
3096 inv2.outcome_id,
3097 inv2.result_id,
3099 ) change
3100 ON (
3101 fact.email_account_id = change.email_account_id
3102 AND fact.email_classification_id = change.email_classification_id
3103 AND fact.agent_id = change.agent_id
3104 AND fact.party_id = change.party_id
3105 AND fact.time_id = change.time_id
3106 AND fact.period_type_id = change.period_type_id
3107 AND fact.period_start_date = change.period_start_date
3108 AND fact.period_start_time = change.period_start_time
3109 AND fact.outcome_id = change.outcome_id
3110 AND fact.result_id = change.result_id
3111 AND fact.reason_id = change.reason_id )
3112 WHEN MATCHED THEN
3113 UPDATE
3114 SET fact.emails_offered_in_period = DECODE(nvl(fact.emails_offered_in_period,0) + nvl(change.emails_offered_in_period,0),
3115 0, NULL, nvl(fact.emails_offered_in_period,0) + nvl(change.emails_offered_in_period,0))
3116 ,fact.emails_fetched_in_period = DECODE(nvl(fact.emails_fetched_in_period,0) + nvl(change.emails_fetched_in_period,0),
3117 0, NULL, nvl(fact.emails_fetched_in_period,0) + nvl(change.emails_fetched_in_period,0))
3118 ,fact.emails_replied_in_period = DECODE(nvl(fact.emails_replied_in_period,0) + nvl(change.emails_replied_in_period,0),
3119 0, NULL, nvl(fact.emails_replied_in_period,0) + nvl(change.emails_replied_in_period,0))
3120 ,fact.emails_rpld_by_goal_in_period = DECODE(nvl(fact.emails_rpld_by_goal_in_period,0) + nvl(change.emails_rpld_by_goal_in_period,
3121 0), 0, NULL, nvl(fact.emails_rpld_by_goal_in_period,0) + nvl(change.emails_rpld_by_goal_in_period,0))
3122 ,fact.AGENT_EMAILS_RPLD_BY_GOAL = DECODE(nvl(fact.AGENT_EMAILS_RPLD_BY_GOAL,0) + nvl(change.AGENT_EMAILS_RPLD_BY_GOAL,
3123 0), 0, NULL, nvl(fact.AGENT_EMAILS_RPLD_BY_GOAL,0) + nvl(change.AGENT_EMAILS_RPLD_BY_GOAL,0))
3124 ,fact.emails_deleted_in_period = DECODE(nvl(fact.emails_deleted_in_period,0) + nvl(change.emails_deleted_in_period,0), 0, NULL,
3125 nvl(fact.emails_deleted_in_period,0) + nvl(change.emails_deleted_in_period,0))
3126 ,fact.emails_trnsfrd_out_in_period = DECODE(nvl(fact.emails_trnsfrd_out_in_period,0) + nvl(change.emails_trnsfrd_out_in_period,0),
3127 0, NULL, nvl(fact.emails_trnsfrd_out_in_period,0) + nvl(change.emails_trnsfrd_out_in_period,0))
3128 ,fact.emails_trnsfrd_in_in_period = DECODE(nvl(fact.emails_trnsfrd_in_in_period,0) + nvl(change.emails_trnsfrd_in_in_period,0),
3129 0, NULL, nvl(fact.emails_trnsfrd_in_in_period,0) + nvl(change.emails_trnsfrd_in_in_period,0))
3130 ,fact.emails_assigned_in_period = DECODE(nvl(fact.emails_assigned_in_period,0) + nvl(change.emails_assigned_in_period,0),
3131 0, NULL, nvl(fact.emails_assigned_in_period,0) + nvl(change.emails_assigned_in_period,0))
3132 ,fact.emails_auto_routed_in_period = DECODE(nvl(fact.emails_auto_routed_in_period,0) + nvl(change.emails_auto_routed_in_period,0),
3133 0, NULL, nvl(fact.emails_auto_routed_in_period,0) + nvl(change.emails_auto_routed_in_period,0))
3134 ,fact.emails_auto_uptd_sr_in_period = DECODE(nvl(fact.emails_auto_uptd_sr_in_period,0) + nvl(change.emails_auto_uptd_sr_in_period,0),
3135 0, NULL, nvl(fact.emails_auto_uptd_sr_in_period,0) + nvl(change.emails_auto_uptd_sr_in_period,0))
3136 ,fact.email_resp_time_in_period = DECODE(nvl(fact.email_resp_time_in_period,0) + nvl(change.email_resp_time_in_period,0),
3137 0, NULL, nvl(fact.email_resp_time_in_period,0) + nvl(change.email_resp_time_in_period,0))
3138 ,fact.agent_resp_time_in_period = DECODE(nvl(fact.agent_resp_time_in_period,0) + nvl(change.agent_resp_time_in_period,0),
3139 0, NULL, nvl(fact.agent_resp_time_in_period,0) + nvl(change.agent_resp_time_in_period,0))
3140 ,fact.sr_created_in_period = DECODE(nvl(fact.sr_created_in_period,0) + nvl(change.sr_created_in_period,0),
3141 0, NULL, nvl(fact.sr_created_in_period,0) + nvl(change.sr_created_in_period,0))
3142 ,fact.emails_rsl_and_trfd_in_period = DECODE(nvl(fact.emails_rsl_and_trfd_in_period,0) + nvl(change.emails_rsl_and_trfd_in_period,0),
3143 0, NULL, nvl(fact.emails_rsl_and_trfd_in_period,0) + nvl(change.emails_rsl_and_trfd_in_period,0))
3144 ,fact.emails_orr_count_in_period = DECODE(nvl(fact.emails_orr_count_in_period,0) + nvl(change.emails_orr_count_in_period,0),
3145 0, NULL, nvl(fact.emails_orr_count_in_period,0) + nvl(change.emails_orr_count_in_period,0))
3146 ,fact.EMAILS_AUTO_REPLIED_IN_PERIOD = DECODE(nvl(fact.EMAILS_AUTO_REPLIED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_REPLIED_IN_PERIOD,0),
3147 0, NULL, nvl(fact.EMAILS_AUTO_REPLIED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_REPLIED_IN_PERIOD,0))
3148 ,fact.EMAILS_AUTO_DELETED_IN_PERIOD = DECODE(nvl(fact.EMAILS_AUTO_DELETED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_DELETED_IN_PERIOD,0),
3149 0, NULL, nvl(fact.EMAILS_AUTO_DELETED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_DELETED_IN_PERIOD,0))
3150 ,fact.EMAILS_AUTO_RESOLVED_IN_PERIOD = DECODE(nvl(fact.EMAILS_AUTO_RESOLVED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_RESOLVED_IN_PERIOD,
3151 0), 0, NULL, nvl(fact.EMAILS_AUTO_RESOLVED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_RESOLVED_IN_PERIOD,0))
3152 ,fact.emails_composed_in_period = DECODE(nvl(fact.emails_composed_in_period,0) + nvl(change.emails_composed_in_period,0),
3153 0, NULL, nvl(fact.emails_composed_in_period,0) + nvl(change.emails_composed_in_period,0))
3154 --
3155 --Note that accumulated measures are not added together - they are replaced by the new
3156 --calculated value as they are not additive.
3157 --
3158 ,fact.accumulated_open_emails = decode(change.accumulated_open_emails,0,to_number(NULL),change.accumulated_open_emails)
3159 ,fact.accumulated_emails_in_queue = decode(change.accumulated_emails_in_queue,0,to_number(NULL),change.accumulated_emails_in_queue)
3160 ,fact.accumulated_emails_one_day = decode(change.accumulated_emails_one_day,0,to_number(NULL),change.accumulated_emails_one_day)
3161 ,fact.accumulated_emails_three_days = decode(change.accumulated_emails_three_days,0,to_number(NULL),change.accumulated_emails_three_days)
3162 ,fact.accumulated_emails_week = decode(change.accumulated_emails_week,0,to_number(NULL),change.accumulated_emails_week)
3166 ,fact.emails_rerouted_in_period = DECODE(nvl(fact.emails_rerouted_in_period,0) + nvl(change.emails_rerouted_in_period,0),
3163 ,fact.accumulated_emails_week_plus = decode(change.accumulated_emails_week_plus,0,to_number(NULL),change.accumulated_emails_week_plus)
3164 ,fact.last_updated_by = change.last_updated_by
3165 ,fact.last_update_date = change.last_update_date
3167 0, NULL, nvl(fact.emails_rerouted_in_period,0) + nvl(change.emails_rerouted_in_period,0))
3168 ,fact.leads_created_in_period = DECODE(nvl(fact.leads_created_in_period,0) + nvl(change.leads_created_in_period,0),
3169 0, NULL, nvl(fact.leads_created_in_period,0) + nvl(change.leads_created_in_period,0))
3170 WHEN NOT MATCHED THEN
3171 INSERT (
3172 fact.email_account_id,
3173 fact.email_classification_id,
3174 fact.agent_id,
3175 fact.party_id,
3176 fact.time_id,
3177 fact.period_type_id,
3178 fact.period_start_date,
3179 fact.period_start_time,
3180 fact.outcome_id,
3181 fact.result_id,
3182 fact.reason_id,
3183 fact.created_by,
3184 fact.creation_date,
3185 fact.last_updated_by,
3186 fact.last_update_date,
3187 fact.emails_offered_in_period,
3188 fact.emails_fetched_in_period,
3189 fact.emails_replied_in_period,
3190 fact.emails_rpld_by_goal_in_period,
3191 fact.AGENT_EMAILS_RPLD_BY_GOAL,
3192 fact.emails_deleted_in_period,
3193 fact.emails_trnsfrd_out_in_period,
3194 fact.emails_trnsfrd_in_in_period,
3195 fact.emails_assigned_in_period,
3196 fact.emails_auto_routed_in_period,
3197 fact.emails_auto_uptd_sr_in_period,
3198 fact.email_resp_time_in_period,
3199 fact.agent_resp_time_in_period,
3200 fact.sr_created_in_period,
3201 fact.emails_rsl_and_trfd_in_period,
3202 fact.emails_orr_count_in_period,
3203 fact.EMAILS_AUTO_REPLIED_IN_PERIOD,
3204 fact.EMAILS_AUTO_DELETED_IN_PERIOD,
3205 fact.EMAILS_AUTO_RESOLVED_IN_PERIOD,
3206 fact.emails_composed_in_period,
3207 fact.accumulated_open_emails,
3208 fact.accumulated_emails_in_queue,
3209 fact.accumulated_emails_one_day,
3210 fact.accumulated_emails_three_days,
3211 fact.accumulated_emails_week,
3212 fact.accumulated_emails_week_plus,
3213 fact.request_id,
3214 fact.program_application_id,
3215 fact.program_id,
3216 fact.program_update_date,
3217 fact.emails_rerouted_in_period,
3218 fact.leads_created_in_period )
3219 VALUES (
3220 change.email_account_id,
3221 change.email_classification_id,
3222 change.agent_id,
3223 change.party_id,
3224 change.time_id,
3225 change.period_type_id,
3226 change.period_start_date,
3227 change.period_start_time,
3228 change.outcome_id,
3229 change.result_id,
3230 change.reason_id,
3231 change.created_by,
3232 change.creation_date,
3233 change.last_updated_by,
3234 change.last_update_date,
3235 decode(change.emails_offered_in_period,0,to_number(null), change.emails_offered_in_period),
3236 decode(change.emails_fetched_in_period, 0,to_number(null),change.emails_fetched_in_period),
3237 decode(change.emails_replied_in_period, 0,to_number(null),change.emails_replied_in_period),
3238 decode(change.emails_rpld_by_goal_in_period, 0,to_number(null),change.emails_rpld_by_goal_in_period),
3239 decode(change.AGENT_EMAILS_RPLD_BY_GOAL, 0,to_number(null),change.AGENT_EMAILS_RPLD_BY_GOAL),
3240 decode(change.emails_deleted_in_period, 0,to_number(null),change.emails_deleted_in_period),
3241 decode(change.emails_trnsfrd_out_in_period, 0,to_number(null),change.emails_trnsfrd_out_in_period),
3242 decode(change.emails_trnsfrd_in_in_period, 0,to_number(null),change.emails_trnsfrd_in_in_period),
3243 decode(change.emails_assigned_in_period, 0,to_number(null),change.emails_assigned_in_period),
3244 decode(change.emails_auto_routed_in_period, 0,to_number(null),change.emails_auto_routed_in_period),
3245 decode(change.emails_auto_uptd_sr_in_period, 0,to_number(null),change.emails_auto_uptd_sr_in_period),
3246 decode(change.email_resp_time_in_period, 0,to_number(null),change.email_resp_time_in_period),
3247 decode(change.agent_resp_time_in_period, 0,to_number(null),change.agent_resp_time_in_period),
3248 decode(change.sr_created_in_period, 0,to_number(null),change.sr_created_in_period),
3249 decode(change.emails_rsl_and_trfd_in_period, 0,to_number(null),change.emails_rsl_and_trfd_in_period),
3250 decode(change.emails_orr_count_in_period, 0,to_number(null),change.emails_orr_count_in_period),
3251 decode(change.EMAILS_AUTO_REPLIED_IN_PERIOD, 0,to_number(null),change.EMAILS_AUTO_REPLIED_IN_PERIOD),
3252 decode(change.EMAILS_AUTO_DELETED_IN_PERIOD, 0,to_number(null),change.EMAILS_AUTO_DELETED_IN_PERIOD),
3253 decode(change.EMAILS_AUTO_RESOLVED_IN_PERIOD, 0,to_number(null),change.EMAILS_AUTO_RESOLVED_IN_PERIOD),
3254 decode(change.emails_composed_in_period, 0,to_number(null),change.emails_composed_in_period),
3255 decode(change.accumulated_open_emails, 0,to_number(null),change.accumulated_open_emails),
3256 decode(change.accumulated_emails_in_queue, 0,to_number(null),change.accumulated_emails_in_queue),
3257 decode(change.accumulated_emails_one_day, 0,to_number(null),change.accumulated_emails_one_day),
3258 decode(change.accumulated_emails_three_days, 0,to_number(null),change.accumulated_emails_three_days),
3259 decode(change.accumulated_emails_week, 0,to_number(null),change.accumulated_emails_week),
3260 decode(change.accumulated_emails_week_plus, 0,to_number(null),change.accumulated_emails_week_plus),
3261 change.request_id,
3262 change.program_application_id,
3263 change.program_id,
3264 change.program_update_date,
3265 decode(change.emails_rerouted_in_period, 0,to_number(null),change.emails_rerouted_in_period),
3269 write_log('Number of rows updated in table bix_email_details_stg for Emails composed and ORR count ' || to_char(SQL%ROWCOUNT));
3266 decode(change.leads_created_in_period, 0,to_number(null),change.leads_created_in_period)
3267 );
3268
3270
3271
3272 MERGE INTO BIX_EMAIL_DETAILS_STG fact
3273 USING
3274 (SELECT
3275 inv2.email_account_id
3276 email_account_id,
3277 inv2.email_classification_id
3278 email_classification_id,
3279 inv2.agent_id
3280 agent_id,
3281 inv2.party_id
3282 party_id,
3283 inv2.time_id
3284 time_id,
3285 1 period_type_id,
3286 inv2.period_start_date
3287 period_start_date,
3288 inv2.period_start_time
3289 period_start_time,
3290 inv2.outcome_id
3291 outcome_id,
3292 inv2.result_id
3293 result_id,
3294 inv2.reason_id
3295 reason_id,
3296 g_user_id
3297 created_by,
3298 g_sysdate
3299 creation_date,
3300 g_user_id
3301 last_updated_by,
3302 g_sysdate
3303 last_update_date,
3304 decode(sum(inv2.emails_offered_in_period), 0, to_number(null), sum(inv2.emails_offered_in_period))
3305 emails_offered_in_period,
3306 decode(sum(inv2.emails_fetched_in_period), 0, to_number(null), sum(inv2.emails_fetched_in_period))
3307 emails_fetched_in_period,
3308 decode(sum(inv2.emails_replied_in_period), 0, to_number(null), sum(inv2.emails_replied_in_period))
3309 emails_replied_in_period,
3310 decode(sum(inv2.emails_rpld_by_goal_in_period), 0, to_number(null), sum(inv2.emails_rpld_by_goal_in_period))
3311 emails_rpld_by_goal_in_period,
3312 decode(sum(inv2.AGENT_EMAILS_RPLD_BY_GOAL), 0, to_number(null), sum(inv2.AGENT_EMAILS_RPLD_BY_GOAL))
3313 AGENT_EMAILS_RPLD_BY_GOAL,
3314 decode(sum(inv2.emails_deleted_in_period), 0, to_number(null), sum(inv2.emails_deleted_in_period))
3315 emails_deleted_in_period,
3316 decode(sum(inv2.emails_trnsfrd_out_in_period), 0, to_number(null), sum(inv2.emails_trnsfrd_out_in_period))
3317 emails_trnsfrd_out_in_period,
3318 decode(sum(inv2.emails_trnsfrd_in_in_period), 0, to_number(null), sum(inv2.emails_trnsfrd_in_in_period))
3319 emails_trnsfrd_in_in_period,
3320 decode(sum(inv2.emails_assigned_in_period), 0, to_number(null), sum(inv2.emails_assigned_in_period))
3321 emails_assigned_in_period,
3322 decode(sum(inv2.emails_auto_routed_in_period), 0, to_number(null), sum(inv2.emails_auto_routed_in_period))
3323 emails_auto_routed_in_period,
3324 decode(sum(inv2.emails_auto_uptd_sr_in_period), 0, to_number(null), sum(inv2.emails_auto_uptd_sr_in_period))
3325 emails_auto_uptd_sr_in_period,
3326 decode(round(sum(inv2.email_resp_time_in_period)), 0, to_number(null), round(sum(inv2.email_resp_time_in_period)))
3327 email_resp_time_in_period,
3328 decode(round(sum(inv2.agent_resp_time_in_period)), 0, to_number(null), round(sum(inv2.agent_resp_time_in_period)))
3329 agent_resp_time_in_period,
3330 decode(sum(inv2.sr_created_in_period), 0, to_number(null), sum(inv2.sr_created_in_period))
3331 sr_created_in_period,
3332 decode(sum(inv2.emails_rsl_and_trfd_in_period), 0, to_number(null), sum(inv2.emails_rsl_and_trfd_in_period))
3333 emails_rsl_and_trfd_in_period,
3334 decode(sum(EMAILS_AUTO_REPLIED_IN_PERIOD), 0, to_number(null), sum(EMAILS_AUTO_REPLIED_IN_PERIOD))
3335 EMAILS_AUTO_REPLIED_IN_PERIOD,
3336 decode(sum(EMAILS_AUTO_DELETED_IN_PERIOD), 0, to_number(null), sum(EMAILS_AUTO_DELETED_IN_PERIOD))
3337 EMAILS_AUTO_DELETED_IN_PERIOD,
3338 decode(sum(EMAILS_AUTO_RESOLVED_IN_PERIOD), 0, to_number(null), sum(EMAILS_AUTO_RESOLVED_IN_PERIOD))
3339 EMAILS_AUTO_RESOLVED_IN_PERIOD,
3340 decode(sum(emails_composed_in_period), 0, to_number(null), sum(emails_composed_in_period))
3341 emails_composed_in_period,
3342 decode(sum(emails_orr_count_in_period), 0, to_number(null), sum(emails_orr_count_in_period))
3343 emails_orr_count_in_period,
3344 decode(sum(accumulated_open_emails), 0, to_number(null), sum(accumulated_open_emails))
3345 accumulated_open_emails,
3346 decode(sum(accumulated_emails_in_queue), 0, to_number(null), sum(accumulated_emails_in_queue))
3347 accumulated_emails_in_queue,
3348 decode(sum(accumulated_emails_one_day), 0, to_number(null), sum(accumulated_emails_one_day))
3349 accumulated_emails_one_day,
3350 decode(sum(accumulated_emails_three_days), 0, to_number(null), sum(accumulated_emails_three_days))
3351 accumulated_emails_three_days,
3352 decode(sum(accumulated_emails_week), 0, to_number(null), sum(accumulated_emails_week))
3353 accumulated_emails_week,
3354 decode(sum(accumulated_emails_week_plus), 0, to_number(null), sum(accumulated_emails_week_plus))
3355 accumulated_emails_week_plus,
3356 decode(sum(LEADS_CREATED_IN_PERIOD), 0, to_number(null), sum(LEADS_CREATED_IN_PERIOD))
3357 LEADS_CREATED_IN_PERIOD,
3358 decode(sum(EMAILS_REROUTED_IN_PERIOD), 0, to_number(null), sum(EMAILS_REROUTED_IN_PERIOD))
3359 EMAILS_REROUTED_IN_PERIOD,
3360 g_request_id
3361 request_id,
3362 g_program_appl_id
3363 program_application_id,
3364 g_program_id
3365 program_id,
3366 g_sysdate
3367 program_update_date
3368 FROM
3369 (
3370 /* Query 7 -Part I*/
3371 SELECT
3372 nvl(iview.email_account_id, -1) EMAIL_ACCOUNT_ID,
3373 nvl(iview.email_classification_id, -1) EMAIL_CLASSIFICATION_ID,
3374 nvl(iview.resource_id, -1) AGENT_ID,
3375 nvl(iview.party_id, -1) PARTY_ID,
3376 trunc(ftd.start_date) PERIOD_START_DATE,
3377 to_number(to_char(ftd.start_date, 'J')) TIME_ID,
3378 '00:00' PERIOD_START_TIME,
3382 0 EMAILS_OFFERED_IN_PERIOD,
3379 -1 OUTCOME_ID,
3380 -1 RESULT_ID,
3381 -1 REASON_ID,
3383 0 EMAILS_FETCHED_IN_PERIOD,
3384 0 EMAILS_REPLIED_IN_PERIOD,
3385 0 AGENT_RESP_TIME_IN_PERIOD,
3386 0 EMAILS_RPLD_BY_GOAL_IN_PERIOD,
3387 0 AGENT_EMAILS_RPLD_BY_GOAL,
3388 0 EMAILS_TRNSFRD_OUT_IN_PERIOD,
3389 0 EMAILS_TRNSFRD_IN_IN_PERIOD,
3390 0 EMAILS_ASSIGNED_IN_PERIOD,
3391 0 EMAILS_AUTO_ROUTED_IN_PERIOD,
3392 0 EMAILS_AUTO_UPTD_SR_IN_PERIOD,
3393 0 EMAILS_DELETED_IN_PERIOD,
3394 0 EMAIL_RESP_TIME_IN_PERIOD,
3395 0 SR_CREATED_IN_PERIOD,
3396 0 EMAILS_RSL_AND_TRFD_IN_PERIOD,
3397 0 EMAILS_AUTO_REPLIED_IN_PERIOD,
3398 0 EMAILS_AUTO_DELETED_IN_PERIOD,
3399 0 EMAILS_AUTO_RESOLVED_IN_PERIOD,
3400 0 emails_composed_in_period,
3401 0 emails_orr_count_in_period,
3402 sum(CASE WHEN ((iview.end_date_time - ftd.start_date) > 1) THEN 1
3403 WHEN (((iview.end_date_time - ftd.start_date) <= 1) AND (flag = 1)) THEN 1
3404 ELSE 0 END) accumulated_open_emails,
3405 0 accumulated_emails_in_queue,
3406 sum(CASE WHEN
3407 (decode(sign(iview.end_date_time - (ftd.start_date+1)), 1, ftd.start_date+1, iview.end_date_time) - media_start_date_time >= 0 AND
3408 decode(sign(iview.end_date_time - (ftd.start_date+1)), 1, ftd.start_date+1, iview.end_date_time) - media_start_date_time <= 1 AND
3409 decode(sign((iview.end_date_time - ftd.start_date) -1), 1, 1, decode(flag, 1, 1, 0)) = 1) THEN 1 else 0 END)
3410 accumulated_emails_one_day,
3411 sum(CASE WHEN
3412 (decode(sign(iview.end_date_time - (ftd.start_date+1)), 1, ftd.start_date+1, iview.end_date_time) - media_start_date_time > 1 AND
3413 decode(sign(iview.end_date_time - (ftd.start_date+1)), 1, ftd.start_date+1, iview.end_date_time) - media_start_date_time <= 3 AND
3414 decode(sign((iview.end_date_time - ftd.start_date) -1), 1, 1, decode(flag, 1, 1, 0)) = 1) THEN 1 else 0 END)
3415 accumulated_emails_three_days,
3416 sum(CASE WHEN
3417 (decode(sign(iview.end_date_time - (ftd.start_date+1)), 1, ftd.start_date+1, iview.end_date_time) - media_start_date_time > 3 AND
3418 decode(sign(iview.end_date_time - (ftd.start_date+1)), 1, ftd.start_date+1, iview.end_date_time) - media_start_date_time <= 7 AND
3419 decode(sign((iview.end_date_time - ftd.start_date) -1), 1, 1, decode(flag, 1, 1, 0)) = 1) THEN 1 else 0 END)
3420 accumulated_emails_week,
3421 sum(CASE WHEN
3422 (decode(sign(iview.end_date_time - (ftd.start_date+1)), 1, ftd.start_date+1, iview.end_date_time) - media_start_date_time > 7 AND
3423 decode(sign((iview.end_date_time - ftd.start_date) -1), 1, 1, decode(flag, 1, 1, 0)) = 1) THEN 1 else 0 END)
3424 accumulated_emails_week_plus,
3425 0 EMAILS_REROUTED_IN_PERIOD,
3426 0 LEADS_CREATED_IN_PERIOD
3427 FROM
3428 fii_time_day ftd,
3429 (
3430 /* Query 7 -Part I*/SELECT
3431 media_id MEDIA_ID,
3432 nvl(email_account_id, -1) EMAIL_ACCOUNT_ID,
3433 nvl(email_classification_id, -1) EMAIL_CLASSIFICATION_ID,
3434 nvl(resource_id,-1) RESOURCE_ID,
3435 nvl(party_id, -1) PARTY_ID,
3436 decode(sign(max(seg_start_date_time) - g_collect_start_date), 1, max(seg_start_date_time),g_collect_start_date)
3437 START_DATE_TIME,
3438 g_collect_end_date END_DATE_TIME,
3439 max(media_start_date_time) MEDIA_START_DATE_TIME,
3440 1 FLAG
3441 FROM
3442 (
3443 /* Query 7 -Part I*/
3444 SELECT /*+ ordered INDEX(MSEG JTF_IH_MEDIA_ITEM_LC_SEGS_N3) use_nl(mseg,mitm,act,int) */
3445 mitm.media_id MEDIA_ID,
3446 mseg.milcs_id MILCS_ID,
3447 nvl(mitm.source_id, -1) EMAIL_ACCOUNT_ID,
3448 nvl(cls.route_classification_id, -1) EMAIL_CLASSIFICATION_ID,
3449 nvl(mseg.resource_id,-1) RESOURCE_ID,
3450 first_value(int.party_id) over(partition by act.media_id order by act.interaction_id DESC) PARTY_ID,
3451 mseg.start_date_time SEG_START_DATE_TIME,
3452 mitm.start_date_time MEDIA_START_DATE_TIME
3453 FROM
3454 JTF_IH_MEDIA_ITEM_LC_SEGS mseg,
3455 JTF_IH_MEDIA_ITEMS mitm,
3456 JTF_IH_ACTIVITIES act,
3457 JTF_IH_INTERACTIONS int,
3458 (
3459 select name, max(route_classification_id) route_classification_id
3460 from iem_route_classifications
3461 group by name
3462 ) cls
3463 WHERE 1=1
3464 --mitm.media_item_type = 'EMAIL'
3465 AND mitm.media_id = act.media_id
3466 AND int.interaction_id = act.interaction_id
3467 AND mitm.direction = 'INBOUND'
3468 AND mitm.classification = cls.name(+)
3472 AND NOT EXISTS
3469 AND mitm.media_id = mseg.media_id
3470 AND mseg.start_date_time < g_collect_end_date
3471 AND mseg.milcs_type_id in (g_fetch,g_transfer,g_a_routed,g_assigned,g_assign_open)
3473 (
3474 SELECT 1
3475 FROM JTF_IH_MEDIA_ITEM_LC_SEGS mseg1
3476 WHERE mseg.media_id = mseg1.media_id
3477 /* Commenting this join out because the supervisor can perform some of the operations below.
3478 Irrespective of which user did it, the email is not open any more */
3479 -- AND mseg.resource_id = mseg1.resource_id
3480 AND mseg1.milcs_type_id IN (g_deleted,g_transferred,g_reply,g_assigned,g_rerouted_acct,g_rerouted_class,g_Requeued,g_escalated)
3481 AND mseg1.START_DATE_TIME >= mseg.START_DATE_TIME
3482 AND mseg1.start_date_time < g_collect_end_date
3483 AND mseg1.milcs_id <> mseg.milcs_id
3484 )
3485 )
3486 group by media_id, nvl(email_account_id, -1), nvl(email_classification_id, -1),
3487 nvl(resource_id,-1), nvl(party_id, -1), milcs_id
3488 UNION
3489 /* Query 7 -Part II*/
3490 --Not open any more but was open in the past - note this does not need the interactions, activities
3491 --merged into the same query, since act.start_date_time would fall into the collect start and end buckets
3492 SELECT
3493 MEDIA_ID,
3494 EMAIL_ACCOUNT_ID,
3495 EMAIL_CLASSIFICATION_ID,
3496 RESOURCE_ID,
3497 PARTY_ID,
3498 START_DATE_TIME,
3499 min(END_DATE_TIME) END_DATE_TIME,
3500 MEDIA_START_DATE_TIME,
3501 0 FLAG
3502 FROM
3503 (
3504 SELECT /*+ ordered INDEX(MSEG JTF_IH_MEDIA_ITEM_LC_SEGS_N3) use_nl(mseg,mitm)*/
3505 mitm.media_id MEDIA_ID,
3506 nvl(mitm.source_id, -1) EMAIL_ACCOUNT_ID,
3507 nvl(cls.route_classification_id, -1) EMAIL_CLASSIFICATION_ID,
3508 nvl(mseg.resource_id, -1) RESOURCE_ID,
3509 nvl(( SELECT
3510 distinct first_value(intr.party_id) over(order by actv.interaction_id desc) party_id
3511 FROM
3512 jtf_ih_activities actv,
3513 jtf_ih_interactions intr
3514 WHERE
3515 mitm.media_id = actv.media_id
3516 AND actv.interaction_id = intr.interaction_id
3517 ), -1) PARTY_ID,
3518 decode(sign(mseg.start_date_time - g_collect_start_date), 1, mseg.start_date_time, g_collect_start_date)
3519 START_DATE_TIME,
3520 inv2.start_date_time END_DATE_TIME,
3521 mitm.start_date_time MEDIA_START_DATE_TIME
3522 FROM
3523 JTF_IH_MEDIA_ITEM_LC_SEGS mseg,
3524 JTF_IH_MEDIA_ITEMS mitm,
3525 (
3526 select name, max(route_classification_id) route_classification_id
3527 from iem_route_classifications
3528 group by name
3529 ) cls ,
3530 (
3531 SELECT /*+ INDEX(MSEG1 JTF_IH_MEDIA_ITEM_LC_SEGS_N3) */
3532 mseg1.media_id MEDIA_ID,
3533 mseg1.resource_id RESOURCE_ID,
3534 mseg1.start_date_time START_DATE_TIME
3535 FROM JTF_IH_MEDIA_ITEM_LC_SEGS mseg1
3536 WHERE mseg1.milcs_type_id IN (g_deleted,g_transferred,g_reply,g_assigned,g_rerouted_acct,g_rerouted_class,g_Requeued,g_escalated)
3537 AND mseg1.START_DATE_TIME < g_collect_end_date
3538 ) inv2
3539 WHERE mitm.media_id=mseg.media_id
3540 AND inv2.media_id = mseg.media_id
3541 -- AND inv2.resource_id = mseg.resource_id
3542 /* Commenting this join out because the supervisor performs some operations like delete and requeued.
3543 Irrespective of which user did it, the email was not open. Lets say Email fetched by agent a, email transferred by a,
3544 email transfer to b, email requeue to c. If we remove this condition, we anyways take min (inv2.start_date_time),
3545 so a will get the email transferred start date time (done by him), b will get requeue start date time (done by c) */
3546 --AND mitm.media_item_type = 'EMAIL'
3547 AND mitm.direction = 'INBOUND'
3548 AND mitm.classification = cls.name(+)
3549 AND mseg.start_date_time < g_collect_end_date
3550 AND mseg.milcs_type_id in ( g_fetch,g_transfer,g_a_routed,g_assigned,g_assign_open)
3551 AND inv2.START_DATE_TIME >= mseg.START_DATE_TIME
3552
3553 )
3554 GROUP BY
3555 MEDIA_ID,
3556 EMAIL_ACCOUNT_ID,
3557 EMAIL_CLASSIFICATION_ID,
3558 RESOURCE_ID,
3559 PARTY_ID,
3560 START_DATE_TIME,
3561 MEDIA_START_DATE_TIME
3562
3563 ) iview
3564 WHERE ftd.start_date between trunc(iview.start_date_time) AND iview.end_date_time
3565 GROUP BY
3566 iview.email_account_id
3567 ,iview.email_classification_id
3568 ,iview.resource_id
3569 ,iview.party_id
3570 ,ftd.start_date
3571 )inv2
3572 GROUP BY
3573 inv2.email_account_id,
3574 inv2.email_classification_id,
3575 inv2.agent_id,
3576 inv2.party_id,
3577 inv2.time_id,
3578 inv2.period_start_date,
3579 inv2.period_start_time,
3580 inv2.outcome_id,
3581 inv2.result_id,
3582 inv2.reason_id
3583 ) change
3584 ON (
3585 fact.email_account_id = change.email_account_id
3586 AND fact.email_classification_id = change.email_classification_id
3587 AND fact.agent_id = change.agent_id
3588 AND fact.party_id = change.party_id
3589 AND fact.time_id = change.time_id
3590 AND fact.period_type_id = change.period_type_id
3591 AND fact.period_start_date = change.period_start_date
3592 AND fact.period_start_time = change.period_start_time
3593 AND fact.outcome_id = change.outcome_id
3594 AND fact.result_id = change.result_id
3595 AND fact.reason_id = change.reason_id )
3596 WHEN MATCHED THEN
3597 UPDATE
3601 0, NULL, nvl(fact.emails_fetched_in_period,0) + nvl(change.emails_fetched_in_period,0))
3598 SET fact.emails_offered_in_period = DECODE(nvl(fact.emails_offered_in_period,0) + nvl(change.emails_offered_in_period,0),
3599 0, NULL, nvl(fact.emails_offered_in_period,0) + nvl(change.emails_offered_in_period,0))
3600 ,fact.emails_fetched_in_period = DECODE(nvl(fact.emails_fetched_in_period,0) + nvl(change.emails_fetched_in_period,0),
3602 ,fact.emails_replied_in_period = DECODE(nvl(fact.emails_replied_in_period,0) + nvl(change.emails_replied_in_period,0),
3603 0, NULL, nvl(fact.emails_replied_in_period,0) + nvl(change.emails_replied_in_period,0))
3604 ,fact.emails_rpld_by_goal_in_period = DECODE(nvl(fact.emails_rpld_by_goal_in_period,0) + nvl(change.emails_rpld_by_goal_in_period,
3605 0), 0, NULL, nvl(fact.emails_rpld_by_goal_in_period,0) + nvl(change.emails_rpld_by_goal_in_period,0))
3606 ,fact.AGENT_EMAILS_RPLD_BY_GOAL = DECODE(nvl(fact.AGENT_EMAILS_RPLD_BY_GOAL,0) + nvl(change.AGENT_EMAILS_RPLD_BY_GOAL,
3607 0), 0, NULL, nvl(fact.AGENT_EMAILS_RPLD_BY_GOAL,0) + nvl(change.AGENT_EMAILS_RPLD_BY_GOAL,0))
3608 ,fact.emails_deleted_in_period = DECODE(nvl(fact.emails_deleted_in_period,0) + nvl(change.emails_deleted_in_period,0), 0, NULL,
3609 nvl(fact.emails_deleted_in_period,0) + nvl(change.emails_deleted_in_period,0))
3610 ,fact.emails_trnsfrd_out_in_period = DECODE(nvl(fact.emails_trnsfrd_out_in_period,0) + nvl(change.emails_trnsfrd_out_in_period,0),
3611 0, NULL, nvl(fact.emails_trnsfrd_out_in_period,0) + nvl(change.emails_trnsfrd_out_in_period,0))
3612 ,fact.emails_trnsfrd_in_in_period = DECODE(nvl(fact.emails_trnsfrd_in_in_period,0) + nvl(change.emails_trnsfrd_in_in_period,0),
3613 0, NULL, nvl(fact.emails_trnsfrd_in_in_period,0) + nvl(change.emails_trnsfrd_in_in_period,0))
3614 ,fact.emails_assigned_in_period = DECODE(nvl(fact.emails_assigned_in_period,0) + nvl(change.emails_assigned_in_period,0),
3615 0, NULL, nvl(fact.emails_assigned_in_period,0) + nvl(change.emails_assigned_in_period,0))
3616 ,fact.emails_auto_routed_in_period = DECODE(nvl(fact.emails_auto_routed_in_period,0) + nvl(change.emails_auto_routed_in_period,0),
3617 0, NULL, nvl(fact.emails_auto_routed_in_period,0) + nvl(change.emails_auto_routed_in_period,0))
3618 ,fact.emails_auto_uptd_sr_in_period = DECODE(nvl(fact.emails_auto_uptd_sr_in_period,0) + nvl(change.emails_auto_uptd_sr_in_period,0),
3619 0, NULL, nvl(fact.emails_auto_uptd_sr_in_period,0) + nvl(change.emails_auto_uptd_sr_in_period,0))
3620 ,fact.email_resp_time_in_period = DECODE(nvl(fact.email_resp_time_in_period,0) + nvl(change.email_resp_time_in_period,0),
3621 0, NULL, nvl(fact.email_resp_time_in_period,0) + nvl(change.email_resp_time_in_period,0))
3622 ,fact.agent_resp_time_in_period = DECODE(nvl(fact.agent_resp_time_in_period,0) + nvl(change.agent_resp_time_in_period,0),
3623 0, NULL, nvl(fact.agent_resp_time_in_period,0) + nvl(change.agent_resp_time_in_period,0))
3624 ,fact.sr_created_in_period = DECODE(nvl(fact.sr_created_in_period,0) + nvl(change.sr_created_in_period,0),
3625 0, NULL, nvl(fact.sr_created_in_period,0) + nvl(change.sr_created_in_period,0))
3626 ,fact.emails_rsl_and_trfd_in_period = DECODE(nvl(fact.emails_rsl_and_trfd_in_period,0) + nvl(change.emails_rsl_and_trfd_in_period,0),
3627 0, NULL, nvl(fact.emails_rsl_and_trfd_in_period,0) + nvl(change.emails_rsl_and_trfd_in_period,0))
3628 ,fact.emails_orr_count_in_period = DECODE(nvl(fact.emails_orr_count_in_period,0) + nvl(change.emails_orr_count_in_period,0),
3629 0, NULL, nvl(fact.emails_orr_count_in_period,0) + nvl(change.emails_orr_count_in_period,0))
3630 ,fact.EMAILS_AUTO_REPLIED_IN_PERIOD = DECODE(nvl(fact.EMAILS_AUTO_REPLIED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_REPLIED_IN_PERIOD,0),
3631 0, NULL, nvl(fact.EMAILS_AUTO_REPLIED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_REPLIED_IN_PERIOD,0))
3632 ,fact.EMAILS_AUTO_DELETED_IN_PERIOD = DECODE(nvl(fact.EMAILS_AUTO_DELETED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_DELETED_IN_PERIOD,0),
3633 0, NULL, nvl(fact.EMAILS_AUTO_DELETED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_DELETED_IN_PERIOD,0))
3634 ,fact.EMAILS_AUTO_RESOLVED_IN_PERIOD = DECODE(nvl(fact.EMAILS_AUTO_RESOLVED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_RESOLVED_IN_PERIOD,
3635 0), 0, NULL, nvl(fact.EMAILS_AUTO_RESOLVED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_RESOLVED_IN_PERIOD,0))
3636 ,fact.emails_composed_in_period = DECODE(nvl(fact.emails_composed_in_period,0) + nvl(change.emails_composed_in_period,0),
3637 0, NULL, nvl(fact.emails_composed_in_period,0) + nvl(change.emails_composed_in_period,0))
3638 --
3639 --Note that accumulated measures are not added together - they are replaced by the new
3640 --calculated value as they are not additive.
3641 --
3642 ,fact.accumulated_open_emails = decode(change.accumulated_open_emails,0,to_number(NULL),change.accumulated_open_emails)
3643 ,fact.accumulated_emails_in_queue = decode(change.accumulated_emails_in_queue,0,to_number(NULL),change.accumulated_emails_in_queue)
3644 ,fact.accumulated_emails_one_day = decode(change.accumulated_emails_one_day,0,to_number(NULL),change.accumulated_emails_one_day)
3645 ,fact.accumulated_emails_three_days = decode(change.accumulated_emails_three_days,0,to_number(NULL),change.accumulated_emails_three_days)
3646 ,fact.accumulated_emails_week = decode(change.accumulated_emails_week,0,to_number(NULL),change.accumulated_emails_week)
3647 ,fact.accumulated_emails_week_plus = decode(change.accumulated_emails_week_plus,0,to_number(NULL),change.accumulated_emails_week_plus)
3648 ,fact.last_updated_by = change.last_updated_by
3649 ,fact.last_update_date = change.last_update_date
3650 ,fact.emails_rerouted_in_period = DECODE(nvl(fact.emails_rerouted_in_period,0) + nvl(change.emails_rerouted_in_period,0),
3651 0, NULL, nvl(fact.emails_rerouted_in_period,0) + nvl(change.emails_rerouted_in_period,0))
3652 ,fact.leads_created_in_period = DECODE(nvl(fact.leads_created_in_period,0) + nvl(change.leads_created_in_period,0),
3653 0, NULL, nvl(fact.leads_created_in_period,0) + nvl(change.leads_created_in_period,0))
3654 WHEN NOT MATCHED THEN
3655 INSERT (
3656 fact.email_account_id,
3657 fact.email_classification_id,
3661 fact.period_type_id,
3658 fact.agent_id,
3659 fact.party_id,
3660 fact.time_id,
3662 fact.period_start_date,
3663 fact.period_start_time,
3664 fact.outcome_id,
3665 fact.result_id,
3666 fact.reason_id,
3667 fact.created_by,
3668 fact.creation_date,
3669 fact.last_updated_by,
3670 fact.last_update_date,
3671 fact.emails_offered_in_period,
3672 fact.emails_fetched_in_period,
3673 fact.emails_replied_in_period,
3674 fact.emails_rpld_by_goal_in_period,
3675 fact.AGENT_EMAILS_RPLD_BY_GOAL,
3676 fact.emails_deleted_in_period,
3677 fact.emails_trnsfrd_out_in_period,
3678 fact.emails_trnsfrd_in_in_period,
3679 fact.emails_assigned_in_period,
3680 fact.emails_auto_routed_in_period,
3681 fact.emails_auto_uptd_sr_in_period,
3682 fact.email_resp_time_in_period,
3683 fact.agent_resp_time_in_period,
3684 fact.sr_created_in_period,
3685 fact.emails_rsl_and_trfd_in_period,
3686 fact.emails_orr_count_in_period,
3687 fact.EMAILS_AUTO_REPLIED_IN_PERIOD,
3688 fact.EMAILS_AUTO_DELETED_IN_PERIOD,
3689 fact.EMAILS_AUTO_RESOLVED_IN_PERIOD,
3690 fact.emails_composed_in_period,
3691 fact.accumulated_open_emails,
3692 fact.accumulated_emails_in_queue,
3693 fact.accumulated_emails_one_day,
3694 fact.accumulated_emails_three_days,
3695 fact.accumulated_emails_week,
3696 fact.accumulated_emails_week_plus,
3697 fact.request_id,
3698 fact.program_application_id,
3699 fact.program_id,
3700 fact.program_update_date,
3701 fact.emails_rerouted_in_period,
3702 fact.leads_created_in_period )
3703 VALUES (
3704 change.email_account_id,
3705 change.email_classification_id,
3706 change.agent_id,
3707 change.party_id,
3708 change.time_id,
3709 change.period_type_id,
3710 change.period_start_date,
3711 change.period_start_time,
3712 change.outcome_id,
3713 change.result_id,
3714 change.reason_id,
3715 change.created_by,
3716 change.creation_date,
3717 change.last_updated_by,
3718 change.last_update_date,
3719 decode(change.emails_offered_in_period,0,to_number(null), change.emails_offered_in_period),
3720 decode(change.emails_fetched_in_period, 0,to_number(null),change.emails_fetched_in_period),
3721 decode(change.emails_replied_in_period, 0,to_number(null),change.emails_replied_in_period),
3722 decode(change.emails_rpld_by_goal_in_period, 0,to_number(null),change.emails_rpld_by_goal_in_period),
3723 decode(change.AGENT_EMAILS_RPLD_BY_GOAL, 0,to_number(null),change.AGENT_EMAILS_RPLD_BY_GOAL),
3724 decode(change.emails_deleted_in_period, 0,to_number(null),change.emails_deleted_in_period),
3725 decode(change.emails_trnsfrd_out_in_period, 0,to_number(null),change.emails_trnsfrd_out_in_period),
3726 decode(change.emails_trnsfrd_in_in_period, 0,to_number(null),change.emails_trnsfrd_in_in_period),
3727 decode(change.emails_assigned_in_period, 0,to_number(null),change.emails_assigned_in_period),
3728 decode(change.emails_auto_routed_in_period, 0,to_number(null),change.emails_auto_routed_in_period),
3729 decode(change.emails_auto_uptd_sr_in_period, 0,to_number(null),change.emails_auto_uptd_sr_in_period),
3730 decode(change.email_resp_time_in_period, 0,to_number(null),change.email_resp_time_in_period),
3731 decode(change.agent_resp_time_in_period, 0,to_number(null),change.agent_resp_time_in_period),
3732 decode(change.sr_created_in_period, 0,to_number(null),change.sr_created_in_period),
3733 decode(change.emails_rsl_and_trfd_in_period, 0,to_number(null),change.emails_rsl_and_trfd_in_period),
3734 decode(change.emails_orr_count_in_period, 0,to_number(null),change.emails_orr_count_in_period),
3735 decode(change.EMAILS_AUTO_REPLIED_IN_PERIOD, 0,to_number(null),change.EMAILS_AUTO_REPLIED_IN_PERIOD),
3736 decode(change.EMAILS_AUTO_DELETED_IN_PERIOD, 0,to_number(null),change.EMAILS_AUTO_DELETED_IN_PERIOD),
3737 decode(change.EMAILS_AUTO_RESOLVED_IN_PERIOD, 0,to_number(null),change.EMAILS_AUTO_RESOLVED_IN_PERIOD),
3738 decode(change.emails_composed_in_period, 0,to_number(null),change.emails_composed_in_period),
3739 decode(change.accumulated_open_emails, 0,to_number(null),change.accumulated_open_emails),
3740 decode(change.accumulated_emails_in_queue, 0,to_number(null),change.accumulated_emails_in_queue),
3741 decode(change.accumulated_emails_one_day, 0,to_number(null),change.accumulated_emails_one_day),
3742 decode(change.accumulated_emails_three_days, 0,to_number(null),change.accumulated_emails_three_days),
3743 decode(change.accumulated_emails_week, 0,to_number(null),change.accumulated_emails_week),
3744 decode(change.accumulated_emails_week_plus, 0,to_number(null),change.accumulated_emails_week_plus),
3745 change.request_id,
3746 change.program_application_id,
3747 change.program_id,
3748 change.program_update_date,
3749 decode(change.emails_rerouted_in_period, 0,to_number(null),change.emails_rerouted_in_period),
3750 decode(change.leads_created_in_period, 0,to_number(null),change.leads_created_in_period)
3751 );
3752
3753 write_log('Number of rows updated in table bix_email_details_stg for Emails Open ' || to_char(SQL%ROWCOUNT));
3754
3755
3756
3757
3758
3759 MERGE INTO BIX_EMAIL_DETAILS_STG fact
3760 USING
3761 (SELECT
3762 inv2.email_account_id
3763 email_account_id,
3764 inv2.email_classification_id
3765 email_classification_id,
3766 inv2.agent_id
3767 agent_id,
3768 inv2.party_id
3769 party_id,
3770 inv2.time_id
3771 time_id,
3772 1 period_type_id,
3773 inv2.period_start_date
3774 period_start_date,
3775 inv2.period_start_time
3776 period_start_time,
3780 result_id,
3777 inv2.outcome_id
3778 outcome_id,
3779 inv2.result_id
3781 inv2.reason_id
3782 reason_id,
3783 g_user_id
3784 created_by,
3785 g_sysdate
3786 creation_date,
3787 g_user_id
3788 last_updated_by,
3789 g_sysdate
3790 last_update_date,
3791 decode(sum(inv2.emails_offered_in_period), 0, to_number(null), sum(inv2.emails_offered_in_period))
3792 emails_offered_in_period,
3793 decode(sum(inv2.emails_fetched_in_period), 0, to_number(null), sum(inv2.emails_fetched_in_period))
3794 emails_fetched_in_period,
3795 decode(sum(inv2.emails_replied_in_period), 0, to_number(null), sum(inv2.emails_replied_in_period))
3796 emails_replied_in_period,
3797 decode(sum(inv2.emails_rpld_by_goal_in_period), 0, to_number(null), sum(inv2.emails_rpld_by_goal_in_period))
3798 emails_rpld_by_goal_in_period,
3799 decode(sum(inv2.AGENT_EMAILS_RPLD_BY_GOAL), 0, to_number(null), sum(inv2.AGENT_EMAILS_RPLD_BY_GOAL))
3800 AGENT_EMAILS_RPLD_BY_GOAL,
3801 decode(sum(inv2.emails_deleted_in_period), 0, to_number(null), sum(inv2.emails_deleted_in_period))
3802 emails_deleted_in_period,
3803 decode(sum(inv2.emails_trnsfrd_out_in_period), 0, to_number(null), sum(inv2.emails_trnsfrd_out_in_period))
3804 emails_trnsfrd_out_in_period,
3805 decode(sum(inv2.emails_trnsfrd_in_in_period), 0, to_number(null), sum(inv2.emails_trnsfrd_in_in_period))
3806 emails_trnsfrd_in_in_period,
3807 decode(sum(inv2.emails_assigned_in_period), 0, to_number(null), sum(inv2.emails_assigned_in_period))
3808 emails_assigned_in_period,
3809 decode(sum(inv2.emails_auto_routed_in_period), 0, to_number(null), sum(inv2.emails_auto_routed_in_period))
3810 emails_auto_routed_in_period,
3811 decode(sum(inv2.emails_auto_uptd_sr_in_period), 0, to_number(null), sum(inv2.emails_auto_uptd_sr_in_period))
3812 emails_auto_uptd_sr_in_period,
3813 decode(round(sum(inv2.email_resp_time_in_period)), 0, to_number(null), round(sum(inv2.email_resp_time_in_period)))
3814 email_resp_time_in_period,
3815 decode(round(sum(inv2.agent_resp_time_in_period)), 0, to_number(null), round(sum(inv2.agent_resp_time_in_period)))
3816 agent_resp_time_in_period,
3817 decode(sum(inv2.sr_created_in_period), 0, to_number(null), sum(inv2.sr_created_in_period))
3818 sr_created_in_period,
3819 decode(sum(inv2.emails_rsl_and_trfd_in_period), 0, to_number(null), sum(inv2.emails_rsl_and_trfd_in_period))
3820 emails_rsl_and_trfd_in_period,
3821 decode(sum(EMAILS_AUTO_REPLIED_IN_PERIOD), 0, to_number(null), sum(EMAILS_AUTO_REPLIED_IN_PERIOD))
3822 EMAILS_AUTO_REPLIED_IN_PERIOD,
3823 decode(sum(EMAILS_AUTO_DELETED_IN_PERIOD), 0, to_number(null), sum(EMAILS_AUTO_DELETED_IN_PERIOD))
3824 EMAILS_AUTO_DELETED_IN_PERIOD,
3825 decode(sum(EMAILS_AUTO_RESOLVED_IN_PERIOD), 0, to_number(null), sum(EMAILS_AUTO_RESOLVED_IN_PERIOD))
3826 EMAILS_AUTO_RESOLVED_IN_PERIOD,
3827 decode(sum(emails_composed_in_period), 0, to_number(null), sum(emails_composed_in_period))
3828 emails_composed_in_period,
3829 decode(sum(emails_orr_count_in_period), 0, to_number(null), sum(emails_orr_count_in_period))
3830 emails_orr_count_in_period,
3831 decode(sum(accumulated_open_emails), 0, to_number(null), sum(accumulated_open_emails))
3832 accumulated_open_emails,
3833 decode(sum(accumulated_emails_in_queue), 0, to_number(null), sum(accumulated_emails_in_queue))
3834 accumulated_emails_in_queue,
3835 decode(sum(accumulated_emails_one_day), 0, to_number(null), sum(accumulated_emails_one_day))
3836 accumulated_emails_one_day,
3837 decode(sum(accumulated_emails_three_days), 0, to_number(null), sum(accumulated_emails_three_days))
3838 accumulated_emails_three_days,
3839 decode(sum(accumulated_emails_week), 0, to_number(null), sum(accumulated_emails_week))
3840 accumulated_emails_week,
3841 decode(sum(accumulated_emails_week_plus), 0, to_number(null), sum(accumulated_emails_week_plus))
3842 accumulated_emails_week_plus,
3843 decode(sum(LEADS_CREATED_IN_PERIOD), 0, to_number(null), sum(LEADS_CREATED_IN_PERIOD))
3844 LEADS_CREATED_IN_PERIOD,
3845 decode(sum(EMAILS_REROUTED_IN_PERIOD), 0, to_number(null), sum(EMAILS_REROUTED_IN_PERIOD))
3846 EMAILS_REROUTED_IN_PERIOD,
3847 g_request_id
3848 request_id,
3849 g_program_appl_id
3850 program_application_id,
3851 g_program_id
3852 program_id,
3853 g_sysdate
3854 program_update_date
3855 FROM
3856 (
3857
3858 SELECT
3859 nvl(iview.email_account_id, -1) EMAIL_ACCOUNT_ID,
3860 nvl(iview.email_classification_id, -1) EMAIL_CLASSIFICATION_ID,
3861 -1 AGENT_ID,
3862 nvl(iview.party_id, -1) PARTY_ID,
3863 trunc(ftd.start_date) PERIOD_START_DATE,
3864 to_number(to_char(ftd.start_date, 'J')) TIME_ID,
3865 '00:00' PERIOD_START_TIME,
3866 -1 OUTCOME_ID,
3867 -1 RESULT_ID,
3868 -1 REASON_ID,
3869 0 EMAILS_OFFERED_IN_PERIOD,
3870 0 EMAILS_FETCHED_IN_PERIOD,
3871 0 EMAILS_REPLIED_IN_PERIOD,
3872 0 AGENT_RESP_TIME_IN_PERIOD,
3873 0 EMAILS_RPLD_BY_GOAL_IN_PERIOD,
3874 0 AGENT_EMAILS_RPLD_BY_GOAL,
3875 0 EMAILS_TRNSFRD_OUT_IN_PERIOD,
3876 0 EMAILS_TRNSFRD_IN_IN_PERIOD,
3877 0 EMAILS_ASSIGNED_IN_PERIOD,
3881 0 EMAIL_RESP_TIME_IN_PERIOD,
3878 0 EMAILS_AUTO_ROUTED_IN_PERIOD,
3879 0 EMAILS_AUTO_UPTD_SR_IN_PERIOD,
3880 0 EMAILS_DELETED_IN_PERIOD,
3882 0 SR_CREATED_IN_PERIOD,
3883 0 EMAILS_RSL_AND_TRFD_IN_PERIOD,
3884 0 EMAILS_AUTO_REPLIED_IN_PERIOD,
3885 0 EMAILS_AUTO_DELETED_IN_PERIOD,
3886 0 EMAILS_AUTO_RESOLVED_IN_PERIOD,
3887 0 emails_composed_in_period,
3888 0 emails_orr_count_in_period,
3889 0 accumulated_open_emails,
3890 sum(CASE WHEN ((iview.end_date_time - ftd.start_date) > 1) THEN 1
3891 WHEN (((iview.end_date_time - ftd.start_date) <= 1) AND (flag = 1)) THEN 1
3892 ELSE 0 END) accumulated_emails_in_queue,
3893 sum(CASE WHEN
3894 (decode(sign(iview.end_date_time - (ftd.start_date+1)), 1, ftd.start_date+1, iview.end_date_time) - media_start_date_time >= 0 AND
3895 decode(sign(iview.end_date_time - (ftd.start_date+1)), 1, ftd.start_date+1, iview.end_date_time) - media_start_date_time <= 1 AND
3896 decode(sign((iview.end_date_time - ftd.start_date) -1), 1, 1, decode(flag, 1, 1, 0)) = 1) THEN 1 else 0 END)
3897 accumulated_emails_one_day,
3898 sum(CASE WHEN
3899 (decode(sign(iview.end_date_time - (ftd.start_date+1)), 1, ftd.start_date+1, iview.end_date_time) - media_start_date_time > 1 AND
3900 decode(sign(iview.end_date_time - (ftd.start_date+1)), 1, ftd.start_date+1, iview.end_date_time) - media_start_date_time <= 3 AND
3901 decode(sign((iview.end_date_time - ftd.start_date) -1), 1, 1, decode(flag, 1, 1, 0)) = 1) THEN 1 else 0 END)
3902 accumulated_emails_three_days,
3903 sum(CASE WHEN
3904 (decode(sign(iview.end_date_time - (ftd.start_date+1)), 1, ftd.start_date+1, iview.end_date_time) - media_start_date_time > 3 AND
3905 decode(sign(iview.end_date_time - (ftd.start_date+1)), 1, ftd.start_date+1, iview.end_date_time) - media_start_date_time <= 7 AND
3906 decode(sign((iview.end_date_time - ftd.start_date) -1), 1, 1, decode(flag, 1, 1, 0)) = 1) THEN 1 else 0 END)
3907 accumulated_emails_week,
3908 sum(CASE WHEN
3909 (decode(sign(iview.end_date_time - (ftd.start_date+1)), 1, ftd.start_date+1, iview.end_date_time) - media_start_date_time > 7 AND
3910 decode(sign((iview.end_date_time - ftd.start_date) -1), 1, 1, decode(flag, 1, 1, 0)) = 1) THEN 1 else 0 END)
3911 accumulated_emails_week_plus,
3912 0 EMAILS_REROUTED_IN_PERIOD,
3913 0 LEADS_CREATED_IN_PERIOD
3914 FROM
3915 fii_time_day ftd,
3916 --
3917 --Currently in QUEUE or in QUEUE until collect end date
3918 --
3919 (
3920 SELECT
3921 media_id MEDIA_ID,
3922 nvl(email_account_id, -1) EMAIL_ACCOUNT_ID,
3923 nvl(email_classification_id, -1) EMAIL_CLASSIFICATION_ID,
3924 nvl(party_id, -1) PARTY_ID,
3925 decode(sign(max(seg_start_date_time) - g_collect_start_date), 1, max(seg_start_date_time), g_collect_start_date)
3926 START_DATE_TIME,
3927 g_collect_end_date END_DATE_TIME,
3928 max(media_start_date_time) MEDIA_START_DATE_TIME,
3929 1 FLAG
3930 FROM
3931 (
3932 SELECT /*+ ordered index(mseg JTF_IH_MEDIA_ITEM_LC_SEGS_N3) use_nl(mseg,mitm,act,int)*/
3933 mitm.media_id MEDIA_ID,
3934 mseg.milcs_id MILCS_ID,
3935 nvl(mitm.source_id, -1) EMAIL_ACCOUNT_ID,
3936 nvl(cls.route_classification_id, -1) EMAIL_CLASSIFICATION_ID,
3937 first_value(int.party_id) over(partition by act.media_id order by act.interaction_id DESC) PARTY_ID,
3938 mseg.start_date_time SEG_START_DATE_TIME,
3939 mitm.start_date_time MEDIA_START_DATE_TIME
3940 FROM
3941 JTF_IH_MEDIA_ITEM_LC_SEGS mseg,
3942 JTF_IH_MEDIA_ITEMS mitm,
3943 JTF_IH_ACTIVITIES act,
3944 JTF_IH_INTERACTIONS int,
3945 (
3946 select name, max(route_classification_id) route_classification_id
3947 from iem_route_classifications
3948 group by name
3949 ) cls
3950 WHERE
3951 --mitm.MEDIA_ITEM_TYPE = 'EMAIL' /* Is this necessary? Without it the unique filter is getting used*/
3952 1=1
3953 AND mitm.DIRECTION = 'INBOUND'
3954 AND int.interaction_id = act.interaction_id
3955 AND act.media_id = mitm.media_id
3956 AND mitm.classification = cls.name(+)
3957 AND mitm.MEDIA_ID = mseg.MEDIA_ID
3958 AND mseg.START_DATE_TIME < g_collect_end_date
3959 AND mseg.MILCS_TYPE_ID = g_processing/* Requeued removed for bug 5337716*/
3960 AND NOT EXISTS
3961 (
3962 SELECT
3963 1
3964 FROM JTF_IH_MEDIA_ITEM_LC_SEGS mseg1
3965 WHERE mseg.MEDIA_ID = mseg1.MEDIA_ID
3966 AND mseg1.MILCS_TYPE_ID in (
3967 G_FETCH, G_RESOLVED, G_A_REDIRECTED, G_A_DELETED, G_A_REPLY, G_OPEN, G_A_ROUTED, G_A_UPDATED_SR,
3968 G_ASSIGNED, G_ASSIGN_OPEN,G_DELETED)
3969 AND mseg1.START_DATE_TIME >= mseg.START_DATE_TIME
3970 AND mseg1.START_DATE_TIME < g_collect_end_date
3971 )
3972 )
3973 GROUP BY media_id, milcs_id,nvl(email_account_id, -1), nvl(email_classification_id, -1) ,nvl(party_id, -1)
3977 nvl(mitm2.source_id, -1) EMAIL_ACCOUNT_ID,
3974 UNION
3975 SELECT /*+ ordered index(mseg2 JTF_IH_MEDIA_ITEM_LC_SEGS_N3) use_nl(mseg2,mitm2) */
3976 mitm2.media_id MEDIA_ID,
3978 nvl(cls2.route_classification_id, -1) EMAIL_CLASSIFICATION_ID,
3979 nvl(inv1.party_id, -1) PARTY_ID,
3980 decode(sign(mseg2.start_date_time - g_collect_start_date), 1, mseg2.start_date_time, g_collect_start_date)
3981 START_DATE_TIME,
3982 min(inv2.start_date_time) END_DATE_TIME,
3983 mitm2.start_date_time MEDIA_START_DATE_TIME,
3984 0 FLAG
3985 FROM
3986 JTF_IH_MEDIA_ITEM_LC_SEGS mseg2,
3987 JTF_IH_MEDIA_ITEMS mitm2,
3988 (
3989 select name, max(route_classification_id) route_classification_id
3990 from iem_route_classifications
3991 group by name
3992 ) cls2,
3993 (
3994 SELECT /*+ index(mseg3 JTF_IH_MEDIA_ITEM_LC_SEGS_N3) */
3995 mseg3.media_id,
3996 mseg3.resource_id,
3997 mseg3.start_date_time
3998 FROM JTF_IH_MEDIA_ITEM_LC_SEGS mseg3
3999 WHERE mseg3.milcs_type_id IN (G_FETCH,G_OPEN,G_A_ROUTED,G_RESOLVED,G_ASSIGNED,G_ASSIGN_OPEN,G_A_UPDATED_SR,G_A_REPLY,G_A_DELETED,G_A_REDIRECTED)
4000 AND mseg3.START_DATE_TIME < g_collect_end_date
4001 ) inv2,
4002 (
4003 SELECT /*+ ordered index(segs JTF_IH_MEDIA_ITEM_LC_SEGS_N3) */
4004 distinct actv.media_id media_id,
4005 first_value(intr.party_id)
4006 over(partition by actv.media_id order by actv.interaction_id desc) party_id
4007 FROM
4008 jtf_ih_media_item_lc_segs segs,
4009 jtf_ih_activities actv,
4010 jtf_ih_interactions intr
4011 WHERE segs.media_id = actv.media_id
4012 AND actv.interaction_id = intr.interaction_id
4013 AND segs.START_DATE_TIME BETWEEN g_collect_start_date AND g_collect_end_date
4014 AND segs.milcs_type_id IN (
4015 G_FETCH, G_RESOLVED, G_A_REDIRECTED, G_A_DELETED, G_A_REPLY, G_OPEN, G_A_ROUTED, G_A_UPDATED_SR,
4016 G_ASSIGNED, G_ASSIGN_OPEN,G_DELETED )
4017 ) inv1
4018 WHERE
4019 --mitm2.MEDIA_ITEM_TYPE = 'EMAIL'
4020 1=1
4021 AND mitm2.DIRECTION = 'INBOUND'
4022 AND mseg2.media_id = mitm2.media_id
4023 AND mitm2.classification = cls2.name(+)
4024 AND mitm2.MEDIA_ID = inv2.MEDIA_ID
4025 AND mitm2.media_id = inv1.media_id
4026 AND mseg2.START_DATE_TIME < g_collect_end_date
4027 AND mseg2.MILCS_TYPE_ID = g_processing
4028 AND inv2.START_DATE_TIME >= mseg2.START_DATE_TIME
4029 GROUP BY
4030 mitm2.media_id,
4031 nvl(mitm2.source_id, -1),
4032 nvl(cls2.route_classification_id, -1),
4033 inv1.party_id,
4034 mseg2.start_date_time,
4035 mitm2.start_date_time
4036 ) iview
4037 WHERE ftd.start_date between trunc(iview.start_date_time) AND iview.end_date_time
4038 GROUP BY
4039 iview.email_account_id
4040 ,iview.email_classification_id
4041 ,iview.party_id
4042 ,ftd.start_date
4043 )inv2
4044 GROUP BY
4045 inv2.email_account_id,
4046 inv2.email_classification_id,
4047 inv2.agent_id,
4048 inv2.party_id,
4049 inv2.time_id,
4050 inv2.period_start_date,
4051 inv2.period_start_time,
4052 inv2.outcome_id,
4053 inv2.result_id,
4054 inv2.reason_id
4055 ) change
4056 ON (
4057 fact.email_account_id = change.email_account_id
4058 AND fact.email_classification_id = change.email_classification_id
4059 AND fact.agent_id = change.agent_id
4060 AND fact.party_id = change.party_id
4061 AND fact.time_id = change.time_id
4062 AND fact.period_type_id = change.period_type_id
4063 AND fact.period_start_date = change.period_start_date
4064 AND fact.period_start_time = change.period_start_time
4065 AND fact.outcome_id = change.outcome_id
4066 AND fact.result_id = change.result_id
4067 AND fact.reason_id = change.reason_id )
4068 WHEN MATCHED THEN
4069 UPDATE
4070 SET fact.emails_offered_in_period = DECODE(nvl(fact.emails_offered_in_period,0) + nvl(change.emails_offered_in_period,0),
4071 0, NULL, nvl(fact.emails_offered_in_period,0) + nvl(change.emails_offered_in_period,0))
4072 ,fact.emails_fetched_in_period = DECODE(nvl(fact.emails_fetched_in_period,0) + nvl(change.emails_fetched_in_period,0),
4073 0, NULL, nvl(fact.emails_fetched_in_period,0) + nvl(change.emails_fetched_in_period,0))
4074 ,fact.emails_replied_in_period = DECODE(nvl(fact.emails_replied_in_period,0) + nvl(change.emails_replied_in_period,0),
4075 0, NULL, nvl(fact.emails_replied_in_period,0) + nvl(change.emails_replied_in_period,0))
4076 ,fact.emails_rpld_by_goal_in_period = DECODE(nvl(fact.emails_rpld_by_goal_in_period,0) + nvl(change.emails_rpld_by_goal_in_period,
4077 0), 0, NULL, nvl(fact.emails_rpld_by_goal_in_period,0) + nvl(change.emails_rpld_by_goal_in_period,0))
4078 ,fact.AGENT_EMAILS_RPLD_BY_GOAL = DECODE(nvl(fact.AGENT_EMAILS_RPLD_BY_GOAL,0) + nvl(change.AGENT_EMAILS_RPLD_BY_GOAL,
4079 0), 0, NULL, nvl(fact.AGENT_EMAILS_RPLD_BY_GOAL,0) + nvl(change.AGENT_EMAILS_RPLD_BY_GOAL,0))
4080 ,fact.emails_deleted_in_period = DECODE(nvl(fact.emails_deleted_in_period,0) + nvl(change.emails_deleted_in_period,0), 0, NULL,
4081 nvl(fact.emails_deleted_in_period,0) + nvl(change.emails_deleted_in_period,0))
4082 ,fact.emails_trnsfrd_out_in_period = DECODE(nvl(fact.emails_trnsfrd_out_in_period,0) + nvl(change.emails_trnsfrd_out_in_period,0),
4083 0, NULL, nvl(fact.emails_trnsfrd_out_in_period,0) + nvl(change.emails_trnsfrd_out_in_period,0))
4087 0, NULL, nvl(fact.emails_assigned_in_period,0) + nvl(change.emails_assigned_in_period,0))
4084 ,fact.emails_trnsfrd_in_in_period = DECODE(nvl(fact.emails_trnsfrd_in_in_period,0) + nvl(change.emails_trnsfrd_in_in_period,0),
4085 0, NULL, nvl(fact.emails_trnsfrd_in_in_period,0) + nvl(change.emails_trnsfrd_in_in_period,0))
4086 ,fact.emails_assigned_in_period = DECODE(nvl(fact.emails_assigned_in_period,0) + nvl(change.emails_assigned_in_period,0),
4088 ,fact.emails_auto_routed_in_period = DECODE(nvl(fact.emails_auto_routed_in_period,0) + nvl(change.emails_auto_routed_in_period,0),
4089 0, NULL, nvl(fact.emails_auto_routed_in_period,0) + nvl(change.emails_auto_routed_in_period,0))
4090 ,fact.emails_auto_uptd_sr_in_period = DECODE(nvl(fact.emails_auto_uptd_sr_in_period,0) + nvl(change.emails_auto_uptd_sr_in_period,0),
4091 0, NULL, nvl(fact.emails_auto_uptd_sr_in_period,0) + nvl(change.emails_auto_uptd_sr_in_period,0))
4092 ,fact.email_resp_time_in_period = DECODE(nvl(fact.email_resp_time_in_period,0) + nvl(change.email_resp_time_in_period,0),
4093 0, NULL, nvl(fact.email_resp_time_in_period,0) + nvl(change.email_resp_time_in_period,0))
4094 ,fact.agent_resp_time_in_period = DECODE(nvl(fact.agent_resp_time_in_period,0) + nvl(change.agent_resp_time_in_period,0),
4095 0, NULL, nvl(fact.agent_resp_time_in_period,0) + nvl(change.agent_resp_time_in_period,0))
4096 ,fact.sr_created_in_period = DECODE(nvl(fact.sr_created_in_period,0) + nvl(change.sr_created_in_period,0),
4097 0, NULL, nvl(fact.sr_created_in_period,0) + nvl(change.sr_created_in_period,0))
4098 ,fact.emails_rsl_and_trfd_in_period = DECODE(nvl(fact.emails_rsl_and_trfd_in_period,0) + nvl(change.emails_rsl_and_trfd_in_period,0),
4099 0, NULL, nvl(fact.emails_rsl_and_trfd_in_period,0) + nvl(change.emails_rsl_and_trfd_in_period,0))
4100 ,fact.emails_orr_count_in_period = DECODE(nvl(fact.emails_orr_count_in_period,0) + nvl(change.emails_orr_count_in_period,0),
4101 0, NULL, nvl(fact.emails_orr_count_in_period,0) + nvl(change.emails_orr_count_in_period,0))
4102 ,fact.EMAILS_AUTO_REPLIED_IN_PERIOD = DECODE(nvl(fact.EMAILS_AUTO_REPLIED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_REPLIED_IN_PERIOD,0),
4103 0, NULL, nvl(fact.EMAILS_AUTO_REPLIED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_REPLIED_IN_PERIOD,0))
4104 ,fact.EMAILS_AUTO_DELETED_IN_PERIOD = DECODE(nvl(fact.EMAILS_AUTO_DELETED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_DELETED_IN_PERIOD,0),
4105 0, NULL, nvl(fact.EMAILS_AUTO_DELETED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_DELETED_IN_PERIOD,0))
4106 ,fact.EMAILS_AUTO_RESOLVED_IN_PERIOD = DECODE(nvl(fact.EMAILS_AUTO_RESOLVED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_RESOLVED_IN_PERIOD,
4107 0), 0, NULL, nvl(fact.EMAILS_AUTO_RESOLVED_IN_PERIOD,0) + nvl(change.EMAILS_AUTO_RESOLVED_IN_PERIOD,0))
4108 ,fact.emails_composed_in_period = DECODE(nvl(fact.emails_composed_in_period,0) + nvl(change.emails_composed_in_period,0),
4109 0, NULL, nvl(fact.emails_composed_in_period,0) + nvl(change.emails_composed_in_period,0))
4110 --
4111 --Note that accumulated measures are not added together - they are replaced by the new
4112 --calculated value as they are not additive.
4113 --
4114 ,fact.accumulated_open_emails = decode(change.accumulated_open_emails,0,to_number(NULL),change.accumulated_open_emails)
4115 ,fact.accumulated_emails_in_queue = decode(change.accumulated_emails_in_queue,0,to_number(NULL),change.accumulated_emails_in_queue)
4116 ,fact.accumulated_emails_one_day = decode(change.accumulated_emails_one_day,0,to_number(NULL),change.accumulated_emails_one_day)
4117 ,fact.accumulated_emails_three_days = decode(change.accumulated_emails_three_days,0,to_number(NULL),change.accumulated_emails_three_days)
4118 ,fact.accumulated_emails_week = decode(change.accumulated_emails_week,0,to_number(NULL),change.accumulated_emails_week)
4119 ,fact.accumulated_emails_week_plus = decode(change.accumulated_emails_week_plus,0,to_number(NULL),change.accumulated_emails_week_plus)
4120 ,fact.last_updated_by = change.last_updated_by
4121 ,fact.last_update_date = change.last_update_date
4122 ,fact.emails_rerouted_in_period = DECODE(nvl(fact.emails_rerouted_in_period,0) + nvl(change.emails_rerouted_in_period,0),
4123 0, NULL, nvl(fact.emails_rerouted_in_period,0) + nvl(change.emails_rerouted_in_period,0))
4124 ,fact.leads_created_in_period = DECODE(nvl(fact.leads_created_in_period,0) + nvl(change.leads_created_in_period,0),
4125 0, NULL, nvl(fact.leads_created_in_period,0) + nvl(change.leads_created_in_period,0))
4126 WHEN NOT MATCHED THEN
4127 INSERT (
4128 fact.email_account_id,
4129 fact.email_classification_id,
4130 fact.agent_id,
4131 fact.party_id,
4132 fact.time_id,
4133 fact.period_type_id,
4134 fact.period_start_date,
4135 fact.period_start_time,
4136 fact.outcome_id,
4137 fact.result_id,
4138 fact.reason_id,
4139 fact.created_by,
4140 fact.creation_date,
4141 fact.last_updated_by,
4142 fact.last_update_date,
4143 fact.emails_offered_in_period,
4144 fact.emails_fetched_in_period,
4145 fact.emails_replied_in_period,
4146 fact.emails_rpld_by_goal_in_period,
4147 fact.AGENT_EMAILS_RPLD_BY_GOAL,
4148 fact.emails_deleted_in_period,
4149 fact.emails_trnsfrd_out_in_period,
4150 fact.emails_trnsfrd_in_in_period,
4151 fact.emails_assigned_in_period,
4152 fact.emails_auto_routed_in_period,
4153 fact.emails_auto_uptd_sr_in_period,
4154 fact.email_resp_time_in_period,
4155 fact.agent_resp_time_in_period,
4156 fact.sr_created_in_period,
4157 fact.emails_rsl_and_trfd_in_period,
4158 fact.emails_orr_count_in_period,
4159 fact.EMAILS_AUTO_REPLIED_IN_PERIOD,
4160 fact.EMAILS_AUTO_DELETED_IN_PERIOD,
4161 fact.EMAILS_AUTO_RESOLVED_IN_PERIOD,
4162 fact.emails_composed_in_period,
4163 fact.accumulated_open_emails,
4164 fact.accumulated_emails_in_queue,
4165 fact.accumulated_emails_one_day,
4166 fact.accumulated_emails_three_days,
4167 fact.accumulated_emails_week,
4171 fact.program_id,
4168 fact.accumulated_emails_week_plus,
4169 fact.request_id,
4170 fact.program_application_id,
4172 fact.program_update_date,
4173 fact.emails_rerouted_in_period,
4174 fact.leads_created_in_period )
4175 VALUES (
4176 change.email_account_id,
4177 change.email_classification_id,
4178 change.agent_id,
4179 change.party_id,
4180 change.time_id,
4181 change.period_type_id,
4182 change.period_start_date,
4183 change.period_start_time,
4184 change.outcome_id,
4185 change.result_id,
4186 change.reason_id,
4187 change.created_by,
4188 change.creation_date,
4189 change.last_updated_by,
4190 change.last_update_date,
4191 decode(change.emails_offered_in_period,0,to_number(null), change.emails_offered_in_period),
4192 decode(change.emails_fetched_in_period, 0,to_number(null),change.emails_fetched_in_period),
4193 decode(change.emails_replied_in_period, 0,to_number(null),change.emails_replied_in_period),
4194 decode(change.emails_rpld_by_goal_in_period, 0,to_number(null),change.emails_rpld_by_goal_in_period),
4195 decode(change.AGENT_EMAILS_RPLD_BY_GOAL, 0,to_number(null),change.AGENT_EMAILS_RPLD_BY_GOAL),
4196 decode(change.emails_deleted_in_period, 0,to_number(null),change.emails_deleted_in_period),
4197 decode(change.emails_trnsfrd_out_in_period, 0,to_number(null),change.emails_trnsfrd_out_in_period),
4198 decode(change.emails_trnsfrd_in_in_period, 0,to_number(null),change.emails_trnsfrd_in_in_period),
4199 decode(change.emails_assigned_in_period, 0,to_number(null),change.emails_assigned_in_period),
4200 decode(change.emails_auto_routed_in_period, 0,to_number(null),change.emails_auto_routed_in_period),
4201 decode(change.emails_auto_uptd_sr_in_period, 0,to_number(null),change.emails_auto_uptd_sr_in_period),
4202 decode(change.email_resp_time_in_period, 0,to_number(null),change.email_resp_time_in_period),
4203 decode(change.agent_resp_time_in_period, 0,to_number(null),change.agent_resp_time_in_period),
4204 decode(change.sr_created_in_period, 0,to_number(null),change.sr_created_in_period),
4205 decode(change.emails_rsl_and_trfd_in_period, 0,to_number(null),change.emails_rsl_and_trfd_in_period),
4206 decode(change.emails_orr_count_in_period, 0,to_number(null),change.emails_orr_count_in_period),
4207 decode(change.EMAILS_AUTO_REPLIED_IN_PERIOD, 0,to_number(null),change.EMAILS_AUTO_REPLIED_IN_PERIOD),
4208 decode(change.EMAILS_AUTO_DELETED_IN_PERIOD, 0,to_number(null),change.EMAILS_AUTO_DELETED_IN_PERIOD),
4209 decode(change.EMAILS_AUTO_RESOLVED_IN_PERIOD, 0,to_number(null),change.EMAILS_AUTO_RESOLVED_IN_PERIOD),
4210 decode(change.emails_composed_in_period, 0,to_number(null),change.emails_composed_in_period),
4211 decode(change.accumulated_open_emails, 0,to_number(null),change.accumulated_open_emails),
4212 decode(change.accumulated_emails_in_queue, 0,to_number(null),change.accumulated_emails_in_queue),
4213 decode(change.accumulated_emails_one_day, 0,to_number(null),change.accumulated_emails_one_day),
4214 decode(change.accumulated_emails_three_days, 0,to_number(null),change.accumulated_emails_three_days),
4215 decode(change.accumulated_emails_week, 0,to_number(null),change.accumulated_emails_week),
4216 decode(change.accumulated_emails_week_plus, 0,to_number(null),change.accumulated_emails_week_plus),
4217 change.request_id,
4218 change.program_application_id,
4219 change.program_id,
4220 change.program_update_date,
4221 decode(change.emails_rerouted_in_period, 0,to_number(null),change.emails_rerouted_in_period),
4222 decode(change.leads_created_in_period, 0,to_number(null),change.leads_created_in_period)
4223 );
4224
4225
4226 write_log('Number of rows updated in table bix_email_details_stg for Emails in Queue ' || to_char(SQL%ROWCOUNT));
4227
4228 COMMIT;
4229
4230 write_log('Number of rows updated in table bix_email_details_f : ' || to_char(SQL%ROWCOUNT));
4231
4232 g_rows_ins_upd := g_rows_ins_upd + SQL%ROWCOUNT;
4233
4234 write_log('Finished procedure collect_emails at : ' || to_char(sysdate, 'mm/dd/yyyy hh24:mi:ss'));
4235
4236 EXCEPTION
4237 WHEN OTHERS THEN
4238 write_log('Error in procedure collect_emails : Error : ' || sqlerrm);
4239 RAISE;
4240 END collect_emails;
4241
4242
4243 PROCEDURE rollup_negatives ( p_min_date IN DATE) IS
4244
4245 BEGIN
4246
4247 write_log('Start of the procedure rollup_negatives at : ' || to_char(sysdate, 'mm/dd/yyyy hh24:mi:ss'));
4248
4249 write_log('Merging day rows to week, month, quarter, year bucket in table bix_email_details_f');
4250
4251 /* Rollup half hour information to day, week, month, quarter, year time bucket for table bix_email_details_f */
4252
4253
4254 MERGE INTO bix_email_details_f bead
4255 USING (
4256 SELECT
4257 rlp.agent_id agent_id,
4258 rlp.email_account_id email_account_id,
4259 rlp.email_classification_id email_classification_id,
4260 rlp.party_id party_id,
4261 rlp.time_id time_id,
4262 rlp.period_type_id period_type_id,
4263 rlp.period_start_date period_start_date,
4264 rlp.period_start_time period_start_time,
4265 rlp.outcome_id outcome_id,
4266 rlp.result_id result_id,
4267 rlp.reason_id reason_id,
4268 (-1)*decode(sum(rlp.emails_offered_in_period), 0, to_number(null), sum(rlp.emails_offered_in_period))
4269 emails_offered_in_period,
4270 (-1)*decode(sum(rlp.emails_fetched_in_period), 0, to_number(null), sum(rlp.emails_fetched_in_period))
4271 emails_fetched_in_period,
4275 emails_rpld_by_goal_in_period,
4272 (-1)*decode(sum(rlp.emails_replied_in_period), 0, to_number(null), sum(rlp.emails_replied_in_period))
4273 emails_replied_in_period,
4274 (-1)*decode(sum(rlp.emails_rpld_by_goal_in_period), 0, to_number(null), sum(rlp.emails_rpld_by_goal_in_period))
4276 (-1)*decode(sum(rlp.AGENT_EMAILS_RPLD_BY_GOAL), 0, to_number(null), sum(rlp.AGENT_EMAILS_RPLD_BY_GOAL))
4277 AGENT_EMAILS_RPLD_BY_GOAL,
4278 (-1)*decode(sum(rlp.emails_deleted_in_period), 0, to_number(null), sum(rlp.emails_deleted_in_period))
4279 emails_deleted_in_period,
4280 (-1)*decode(sum(rlp.emails_trnsfrd_out_in_period), 0, to_number(null), sum(rlp.emails_trnsfrd_out_in_period))
4281 emails_trnsfrd_out_in_period,
4282 (-1)*decode(sum(rlp.emails_trnsfrd_in_in_period), 0, to_number(null), sum(rlp.emails_trnsfrd_in_in_period))
4283 emails_trnsfrd_in_in_period,
4284 (-1)*decode(sum(rlp.emails_rsl_and_trfd_in_period), 0, to_number(null), sum(rlp.emails_rsl_and_trfd_in_period))
4285 emails_rsl_and_trfd_in_period,
4286 (-1)*decode(sum(rlp.emails_assigned_in_period), 0, to_number(null), sum(rlp.emails_assigned_in_period))
4287 emails_assigned_in_period,
4288 (-1)*decode(sum(rlp.emails_auto_routed_in_period), 0, to_number(null), sum(rlp.emails_auto_routed_in_period))
4289 emails_auto_routed_in_period,
4290 (-1)*decode(sum(rlp.emails_auto_uptd_sr_in_period), 0, to_number(null), sum(rlp.emails_auto_uptd_sr_in_period))
4291 emails_auto_uptd_sr_in_period,
4292 (-1)*decode(sum(rlp.sr_created_in_period), 0, to_number(null), sum(rlp.sr_created_in_period))
4293 sr_created_in_period,
4294 to_date(null) oldest_email_open_date,
4295 to_date(null) oldest_email_queue_date,
4296 (-1)*decode(sum(rlp.email_resp_time_in_period), 0, to_number(null), sum(rlp.email_resp_time_in_period))
4297 email_resp_time_in_period,
4298 (-1)*decode(sum(rlp.agent_resp_time_in_period), 0, to_number(null), sum(rlp.agent_resp_time_in_period))
4299 agent_resp_time_in_period,
4300 (-1)*min(rlp.acc_open_emails) acc_open_emails,
4301 to_number(null) acc_open_age,
4302 (-1)*min(rlp.acc_emails_in_queue) acc_emails_in_queue,
4303 to_number(null) acc_queue_time,
4304 (-1)*min(rlp.acc_emails_one_day) acc_emails_one_day,
4305 (-1)*min(rlp.acc_emails_three_days) acc_emails_three_days,
4306 (-1)*min(rlp.acc_emails_week) acc_emails_week,
4307 (-1)*min(rlp.acc_emails_week_plus) acc_emails_week_plus,
4308 (-1)*decode(sum(rlp.emails_orr_count_in_period),0,to_number(null),sum(emails_orr_count_in_period)) emails_orr_count_in_period,
4309 (-1)*decode(sum(rlp.EMAILS_AUTO_REPLIED_IN_PERIOD),0,to_number(null),sum(EMAILS_AUTO_REPLIED_IN_PERIOD)) EMAILS_AUTO_REPLIED_IN_PERIOD,
4310 (-1)*decode(sum(rlp.EMAILS_AUTO_DELETED_IN_PERIOD),0,to_number(null),sum(EMAILS_AUTO_DELETED_IN_PERIOD)) EMAILS_AUTO_DELETED_IN_PERIOD,
4311 (-1)*decode(sum(rlp.EMAILS_AUTO_RESOLVED_IN_PERIOD),0,to_number(null),sum(EMAILS_AUTO_RESOLVED_IN_PERIOD)) EMAILS_AUTO_RESOLVED_IN_PERIOD,
4312 (-1)*decode(sum(rlp.emails_composed_in_period),0,to_number(null),sum(emails_composed_in_period)) emails_composed_in_period,
4313 (-1)*decode(sum(rlp.emails_rerouted_in_period),0,to_number(null),sum(emails_rerouted_in_period)) emails_rerouted_in_period,
4314 (-1)*decode(sum(rlp.leads_created_in_period),0,to_number(null),sum(leads_created_in_period)) leads_created_in_period ,
4315 (-1)*decode(sum(rlp.ONE_RSLN_IN_PERIOD),0,to_number(null),sum(ONE_RSLN_IN_PERIOD)) ONE_RSLN_IN_PERIOD,
4316 (-1)*decode(sum(rlp.TWO_RSLN_IN_PERIOD),0,to_number(null),sum(TWO_RSLN_IN_PERIOD)) TWO_RSLN_IN_PERIOD,
4317 (-1)*decode(sum(rlp.THREE_RSLN_IN_PERIOD),0,to_number(null),sum(THREE_RSLN_IN_PERIOD)) THREE_RSLN_IN_PERIOD,
4318 (-1)*decode(sum(rlp.FOUR_RSLN_IN_PERIOD),0,to_number(null),sum(FOUR_RSLN_IN_PERIOD)) FOUR_RSLN_IN_PERIOD,
4319 (-1)*decode(sum(rlp.INTERACTION_THREADS_IN_PERIOD),0,to_number(null),sum(INTERACTION_THREADS_IN_PERIOD)) INTERACTION_THREADS_IN_PERIOD
4320 FROM (
4321 SELECT
4322 inv2.agent_id agent_id,
4323 inv2.email_account_id email_account_id,
4324 inv2.email_classification_id email_classification_id,
4325 inv2.party_id party_id,
4326 inv2.outcome_id outcome_id,
4327 inv2.result_id result_id,
4328 inv2.reason_id reason_id,
4329 decode(inv2.week_id, null, decode(inv2.ent_period_id, null,
4330 decode(inv2.ent_qtr_id, null, decode(inv2.ent_year_id, null, to_number(null), inv2.ent_year_id),
4331 inv2.ent_qtr_id), inv2.ent_period_id), inv2.week_id) time_id,
4332 decode(inv2.week_id, null, decode(inv2.ent_period_id, null,
4333 decode(inv2.ent_qtr_id, null, decode(inv2.ent_year_id, null, to_number(null),
4334 128), 64), 32), 16) period_type_id,
4335 decode(inv2.week_id, null, decode(inv2.ent_period_id, null,
4336 decode(inv2.ent_qtr_id, null, decode(inv2.ent_year_id, null, to_date(null), min(inv2.ent_year_start_date)),
4337 min(inv2.ent_qtr_start_date)), min(inv2.ent_period_start_date)), min(inv2.week_start_date)) period_start_date,
4338 '00:00' period_start_time,
4339 sum(inv2.emails_offered_in_period) emails_offered_in_period,
4340 sum(inv2.emails_fetched_in_period) emails_fetched_in_period,
4341 sum(inv2.emails_replied_in_period) emails_replied_in_period,
4342 sum(inv2.emails_rpld_by_goal_in_period) emails_rpld_by_goal_in_period,
4343 sum(inv2.AGENT_EMAILS_RPLD_BY_GOAL) AGENT_EMAILS_RPLD_BY_GOAL,
4347 sum(inv2.emails_rsl_and_trfd_in_period) emails_rsl_and_trfd_in_period,
4344 sum(inv2.emails_deleted_in_period) emails_deleted_in_period,
4345 sum(inv2.emails_trnsfrd_out_in_period) emails_trnsfrd_out_in_period,
4346 sum(inv2.emails_trnsfrd_in_in_period) emails_trnsfrd_in_in_period,
4348 sum(inv2.emails_assigned_in_period) emails_assigned_in_period,
4349 sum(inv2.emails_auto_routed_in_period) emails_auto_routed_in_period,
4350 sum(inv2.emails_auto_uptd_sr_in_period) emails_auto_uptd_sr_in_period,
4351 sum(inv2.sr_created_in_period) sr_created_in_period,
4352 sum(inv2.email_resp_time_in_period) email_resp_time_in_period,
4353 sum(inv2.agent_resp_time_in_period) agent_resp_time_in_period,
4354 sum(inv2.emails_orr_count_in_period) emails_orr_count_in_period,
4355 sum(inv2.EMAILS_AUTO_REPLIED_IN_PERIOD) EMAILS_AUTO_REPLIED_IN_PERIOD,
4356 sum(inv2.EMAILS_AUTO_DELETED_IN_PERIOD) EMAILS_AUTO_DELETED_IN_PERIOD,
4357 sum(inv2.EMAILS_AUTO_RESOLVED_IN_PERIOD) EMAILS_AUTO_RESOLVED_IN_PERIOD,
4358 sum(inv2.emails_composed_in_period) emails_composed_in_period,
4359 decode(inv2.week_id, null, decode(inv2.ent_period_id, null,
4360 decode(inv2.ent_qtr_id, null, decode(inv2.ent_year_id, null, to_number(null), min(inv2.year_acc_open_emails)),
4361 min(inv2.qtr_acc_open_emails)), min(inv2.period_acc_open_emails)), min(inv2.week_acc_open_emails)) acc_open_emails,
4362 decode(inv2.week_id, null, decode(inv2.ent_period_id, null,
4363 decode(inv2.ent_qtr_id, null, decode(inv2.ent_year_id, null, to_number(null), min(inv2.year_acc_emails_in_queue)),
4364 min(inv2.qtr_acc_emails_in_queue)), min(inv2.period_acc_emails_in_queue)), min(inv2.week_acc_emails_in_queue))
4365 acc_emails_in_queue,
4366 decode(inv2.week_id, null, decode(inv2.ent_period_id, null,
4367 decode(inv2.ent_qtr_id, null, decode(inv2.ent_year_id, null, to_number(null), min(inv2.year_acc_emails_one_day)),
4368 min(inv2.qtr_acc_emails_one_day)), min(inv2.period_acc_emails_one_day)), min(inv2.week_acc_emails_one_day)) acc_emails_one_day,
4369 decode(inv2.week_id, null, decode(inv2.ent_period_id, null,
4370 decode(inv2.ent_qtr_id, null, decode(inv2.ent_year_id, null, to_number(null), min(inv2.year_acc_emails_three_days)),
4371 min(inv2.qtr_acc_emails_three_days)), min(inv2.period_acc_emails_three_days)),
4372 min(inv2.week_acc_emails_three_days)) acc_emails_three_days,
4373 decode(inv2.week_id, null, decode(inv2.ent_period_id, null,
4374 decode(inv2.ent_qtr_id, null, decode(inv2.ent_year_id, null, to_number(null), min(inv2.year_acc_emails_week)),
4375 min(inv2.qtr_acc_emails_week)), min(inv2.period_acc_emails_week)), min(inv2.week_acc_emails_week)) acc_emails_week,
4376 decode(inv2.week_id, null, decode(inv2.ent_period_id, null,
4377 decode(inv2.ent_qtr_id, null, decode(inv2.ent_year_id, null, to_number(null), min(inv2.year_acc_emails_week_plus)),
4378 min(inv2.qtr_acc_emails_week_plus)), min(inv2.period_acc_emails_week_plus)),
4379 min(inv2.week_acc_emails_week_plus)) acc_emails_week_plus,
4380 sum(inv2.EMAILS_REROUTED_IN_PERIOD) EMAILS_REROUTED_IN_PERIOD,
4381 sum(inv2.LEADS_CREATED_IN_PERIOD) LEADS_CREATED_IN_PERIOD,
4382 sum(inv2.ONE_RSLN_IN_PERIOD) ONE_RSLN_IN_PERIOD,
4383 sum(inv2.TWO_RSLN_IN_PERIOD) TWO_RSLN_IN_PERIOD,
4384 sum(inv2.THREE_RSLN_IN_PERIOD) THREE_RSLN_IN_PERIOD,
4385 sum(inv2.FOUR_RSLN_IN_PERIOD) FOUR_RSLN_IN_PERIOD,
4386 sum(inv2.INTERACTION_THREADS_IN_PERIOD) INTERACTION_THREADS_IN_PERIOD
4387 FROM
4388 (SELECT /*+ index(bead BIX_EMAIL_DETAILS_F_N1) */
4389 bead.agent_id agent_id,
4390 bead.email_account_id email_account_id,
4391 bead.email_classification_id email_classification_id,
4392 bead.party_id party_id,
4393 bead.outcome_id,
4394 bead.result_id,
4395 bead.reason_id,
4396 ftd.ent_year_id ent_year_id,
4397 ftd.ent_year_start_date ent_year_start_date,
4398 ftd.ent_qtr_id ent_qtr_id,
4399 ftd.ent_qtr_start_date ent_qtr_start_date,
4400 ftd.ent_period_id ent_period_id,
4401 ftd.ent_period_start_date ent_period_start_date,
4402 ftd.week_id week_id,
4403 ftd.week_start_date week_start_date,
4404 bead.period_start_date period_start_date,
4405 bead.emails_offered_in_period emails_offered_in_period,
4406 bead.emails_fetched_in_period emails_fetched_in_period,
4407 bead.emails_replied_in_period emails_replied_in_period,
4408 bead.emails_rpld_by_goal_in_period emails_rpld_by_goal_in_period,
4409 bead.AGENT_EMAILS_RPLD_BY_GOAL AGENT_EMAILS_RPLD_BY_GOAL,
4410 bead.emails_deleted_in_period emails_deleted_in_period,
4411 bead.emails_trnsfrd_out_in_period emails_trnsfrd_out_in_period,
4412 bead.emails_trnsfrd_in_in_period emails_trnsfrd_in_in_period,
4413 bead.emails_rsl_and_trfd_in_period emails_rsl_and_trfd_in_period,
4414 bead.emails_assigned_in_period emails_assigned_in_period,
4415 bead.emails_auto_routed_in_period emails_auto_routed_in_period,
4416 bead.emails_auto_uptd_sr_in_period emails_auto_uptd_sr_in_period,
4417 bead.sr_created_in_period sr_created_in_period,
4418 bead.email_resp_time_in_period email_resp_time_in_period,
4419 bead.agent_resp_time_in_period agent_resp_time_in_period,
4420 bead.emails_orr_count_in_period emails_orr_count_in_period,
4421 bead.EMAILS_AUTO_REPLIED_IN_PERIOD EMAILS_AUTO_REPLIED_IN_PERIOD,
4422 bead.EMAILS_AUTO_DELETED_IN_PERIOD EMAILS_AUTO_DELETED_IN_PERIOD,
4423 bead.EMAILS_AUTO_RESOLVED_IN_PERIOD EMAILS_AUTO_RESOLVED_IN_PERIOD,
4424 bead.emails_composed_in_period emails_composed_in_period,
4425 bead.emails_rerouted_in_period emails_rerouted_in_period,
4426 bead.leads_created_in_period leads_created_in_period,
4427 bead.ONE_RSLN_IN_PERIOD ONE_RSLN_IN_PERIOD,
4428 bead.TWO_RSLN_IN_PERIOD TWO_RSLN_IN_PERIOD,
4429 bead.THREE_RSLN_IN_PERIOD THREE_RSLN_IN_PERIOD,
4433 over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
4430 bead.FOUR_RSLN_IN_PERIOD FOUR_RSLN_IN_PERIOD,
4431 bead.INTERACTION_THREADS_IN_PERIOD INTERACTION_THREADS_IN_PERIOD,
4432 first_value(bead.accumulated_open_emails)
4434 bead.outcome_id, bead.result_id, bead.reason_id,
4435 ftd.week_id
4436 order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
4437 lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) week_acc_open_emails,
4438 first_value(bead.accumulated_open_emails)
4439 over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
4440 bead.outcome_id, bead.result_id, bead.reason_id,
4441 ftd.ent_period_id
4442 order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
4443 lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) period_acc_open_emails,
4444 first_value(bead.accumulated_open_emails)
4445 over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
4446 bead.outcome_id, bead.result_id, bead.reason_id,
4447 ftd.ent_qtr_id
4448 order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
4449 lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) qtr_acc_open_emails,
4450 first_value(bead.accumulated_open_emails)
4451 over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
4452 bead.outcome_id, bead.result_id, bead.reason_id,
4453 ftd.ent_year_id
4454 order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
4455 lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) year_acc_open_emails,
4456 first_value(bead.accumulated_emails_in_queue)
4457 over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
4458 bead.outcome_id, bead.result_id, bead.reason_id,
4459 ftd.week_id
4460 order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
4461 lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) week_acc_emails_in_queue,
4462 first_value(bead.accumulated_emails_in_queue)
4463 over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
4464 bead.outcome_id, bead.result_id, bead.reason_id,
4465 ftd.ent_period_id
4466 order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
4467 lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) period_acc_emails_in_queue,
4468 first_value(bead.accumulated_emails_in_queue)
4469 over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
4470 bead.outcome_id, bead.result_id, bead.reason_id,
4471 ftd.ent_qtr_id
4472 order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
4473 lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) qtr_acc_emails_in_queue,
4474 first_value(bead.accumulated_emails_in_queue)
4475 over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
4476 bead.outcome_id, bead.result_id, bead.reason_id,
4477 ftd.ent_year_id
4478 order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
4479 lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) year_acc_emails_in_queue,
4480 first_value(bead.accumulated_emails_one_day)
4481 over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
4482 bead.outcome_id, bead.result_id, bead.reason_id,
4483 ftd.week_id
4484 order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
4485 lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) week_acc_emails_one_day,
4486 first_value(bead.accumulated_emails_one_day)
4487 over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
4488 bead.outcome_id, bead.result_id, bead.reason_id,
4489 ftd.ent_period_id
4490 order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
4491 lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) period_acc_emails_one_day,
4492 first_value(bead.accumulated_emails_one_day)
4493 over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
4494 bead.outcome_id, bead.result_id, bead.reason_id,
4495 ftd.ent_qtr_id
4496 order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
4497 lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) qtr_acc_emails_one_day,
4498 first_value(bead.accumulated_emails_one_day)
4499 over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
4500 bead.outcome_id, bead.result_id, bead.reason_id,
4501 ftd.ent_year_id
4502 order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
4503 lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) year_acc_emails_one_day,
4504 first_value(bead.accumulated_emails_three_days)
4505 over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
4506 bead.outcome_id, bead.result_id, bead.reason_id,
4507 ftd.week_id
4508 order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
4509 lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) week_acc_emails_three_days,
4513 ftd.ent_period_id
4510 first_value(bead.accumulated_emails_three_days)
4511 over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
4512 bead.outcome_id, bead.result_id, bead.reason_id,
4514 order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
4515 lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) period_acc_emails_three_days,
4516 first_value(bead.accumulated_emails_three_days)
4517 over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
4518 bead.outcome_id, bead.result_id, bead.reason_id,
4519 ftd.ent_qtr_id
4520 order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
4521 lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) qtr_acc_emails_three_days,
4522 first_value(bead.accumulated_emails_three_days)
4523 over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
4524 bead.outcome_id, bead.result_id, bead.reason_id,
4525 ftd.ent_year_id
4526 order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
4527 lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) year_acc_emails_three_days,
4528 first_value(bead.accumulated_emails_week)
4529 over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
4530 bead.outcome_id, bead.result_id, bead.reason_id,
4531 ftd.week_id
4532 order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
4533 lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) week_acc_emails_week,
4534 first_value(bead.accumulated_emails_week)
4535 over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
4536 bead.outcome_id, bead.result_id, bead.reason_id,
4537 ftd.ent_period_id
4538 order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
4539 lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) period_acc_emails_week,
4540 first_value(bead.accumulated_emails_week)
4541 over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
4542 bead.outcome_id, bead.result_id, bead.reason_id,
4543 ftd.ent_qtr_id
4544 order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
4545 lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) qtr_acc_emails_week,
4546 first_value(bead.accumulated_emails_week)
4547 over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
4548 bead.outcome_id, bead.result_id, bead.reason_id,
4549 ftd.ent_year_id
4550 order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
4551 lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) year_acc_emails_week,
4552 first_value(bead.accumulated_emails_week_plus)
4553 over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
4554 bead.outcome_id, bead.result_id, bead.reason_id,
4555 ftd.week_id
4556 order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
4557 lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) week_acc_emails_week_plus,
4558 first_value(bead.accumulated_emails_week_plus)
4559 over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
4560 bead.outcome_id, bead.result_id, bead.reason_id,
4561 ftd.ent_period_id
4562 order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
4563 lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) period_acc_emails_week_plus,
4564 first_value(bead.accumulated_emails_week_plus)
4565 over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
4566 bead.outcome_id, bead.result_id, bead.reason_id,
4567 ftd.ent_qtr_id
4568 order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
4569 lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) qtr_acc_emails_week_plus,
4570 first_value(bead.accumulated_emails_week_plus)
4571 over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
4572 bead.outcome_id, bead.result_id, bead.reason_id,
4573 ftd.ent_year_id
4574 order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
4575 lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) year_acc_emails_week_plus
4576 FROM bix_email_details_f bead,
4577 fii_time_day ftd
4578 WHERE bead.time_id = ftd.report_date_julian
4579 AND bead.period_type_id = 1
4580 --AND bead.period_start_date >= p_min_date --DOES NOT PERFORM INDEX SCAN IF USING PERIOD_START_DATE
4581 AND bead.time_id >= to_number( to_char(p_min_date,'J'))
4582 ) inv2
4583 GROUP BY
4584 inv2.agent_id,
4585 inv2.email_account_id,
4586 inv2.email_classification_id,
4587 inv2.party_id,
4588 inv2.outcome_id,
4589 inv2.result_id,
4590 inv2.reason_id,
4591 ROLLUP(
4592 inv2.ent_year_id,
4593 inv2.ent_qtr_id,
4594 inv2.ent_period_id,
4595 inv2.week_id)
4596 HAVING
4597 decode(inv2.week_id, null, decode(inv2.ent_period_id, null,
4598 decode(inv2.ent_qtr_id, null, decode(inv2.ent_year_id, null, to_number(null),
4602 rlp.email_account_id,
4599 128), 64), 32), 16) IS NOT NULL) rlp
4600 GROUP BY
4601 rlp.agent_id,
4603 rlp.email_classification_id,
4604 rlp.party_id,
4605 rlp.time_id,
4606 rlp.period_type_id,
4607 rlp.period_start_date,
4608 rlp.period_start_time,
4609 rlp.outcome_id,
4610 rlp.result_id,
4611 rlp.reason_id) change
4612 ON ( bead.agent_id = change.agent_id
4613 AND bead.email_account_id = change.email_account_id
4614 AND bead.email_classification_id = change.email_classification_id
4615 AND bead.party_id = change.party_id
4616 AND bead.time_id = change.time_id
4617 AND bead.period_type_id = change.period_type_id
4618 AND bead.period_start_date = change.period_start_date
4619 AND bead.period_start_time = change.period_start_time
4620 AND bead.outcome_id = change.outcome_id
4621 AND bead.result_id = change.result_id
4622 AND bead.reason_id = change.reason_id )
4623 WHEN MATCHED THEN
4624 UPDATE SET
4625 bead.emails_offered_in_period =
4626 decode(change.emails_offered_in_period, to_number(null), bead.emails_offered_in_period,
4627 nvl(bead.emails_offered_in_period,0) + change.emails_offered_in_period),
4628 bead.emails_fetched_in_period =
4629 decode(change.emails_fetched_in_period, to_number(null), bead.emails_fetched_in_period,
4630 nvl(bead.emails_fetched_in_period,0) + change.emails_fetched_in_period),
4631 bead.emails_replied_in_period =
4632 decode(change.emails_replied_in_period, to_number(null), bead.emails_replied_in_period,
4633 nvl(bead.emails_replied_in_period,0) + change.emails_replied_in_period),
4634 bead.emails_rpld_by_goal_in_period =
4635 decode(change.emails_rpld_by_goal_in_period, to_number(null), bead.emails_rpld_by_goal_in_period,
4636 nvl(bead.emails_rpld_by_goal_in_period,0) + change.emails_rpld_by_goal_in_period),
4637 bead.AGENT_EMAILS_RPLD_BY_GOAL =
4638 decode(change.AGENT_EMAILS_RPLD_BY_GOAL, to_number(null), bead.AGENT_EMAILS_RPLD_BY_GOAL,
4639 nvl(bead.AGENT_EMAILS_RPLD_BY_GOAL,0) + change.AGENT_EMAILS_RPLD_BY_GOAL),
4640 bead.emails_deleted_in_period =
4641 decode(change.emails_deleted_in_period, to_number(null), bead.emails_deleted_in_period,
4642 nvl(bead.emails_deleted_in_period,0) + change.emails_deleted_in_period),
4643 bead.emails_trnsfrd_out_in_period =
4644 decode(change.emails_trnsfrd_out_in_period, to_number(null), bead.emails_trnsfrd_out_in_period,
4645 nvl(bead.emails_trnsfrd_out_in_period,0) + change.emails_trnsfrd_out_in_period),
4646 bead.emails_trnsfrd_in_in_period =
4647 decode(change.emails_trnsfrd_in_in_period, to_number(null), bead.emails_trnsfrd_in_in_period,
4648 nvl(bead.emails_trnsfrd_in_in_period,0) + change.emails_trnsfrd_in_in_period),
4649 bead.emails_rsl_and_trfd_in_period =
4650 decode(change.emails_rsl_and_trfd_in_period,to_number(null),bead.emails_rsl_and_trfd_in_period,
4651 nvl(bead.emails_rsl_and_trfd_in_period,0) + change.emails_rsl_and_trfd_in_period),
4652 bead.emails_assigned_in_period =
4653 decode(change.emails_assigned_in_period, to_number(null), bead.emails_assigned_in_period,
4654 nvl(bead.emails_assigned_in_period,0) + change.emails_assigned_in_period),
4655 bead.emails_auto_routed_in_period =
4656 decode(change.emails_auto_routed_in_period, to_number(null), bead.emails_auto_routed_in_period,
4657 nvl(bead.emails_auto_routed_in_period,0) + change.emails_auto_routed_in_period),
4658 bead.emails_auto_uptd_sr_in_period =
4659 decode(change.emails_auto_uptd_sr_in_period, to_number(null), bead.emails_auto_uptd_sr_in_period,
4660 nvl(bead.emails_auto_uptd_sr_in_period,0) + change.emails_auto_uptd_sr_in_period),
4661 bead.sr_created_in_period = decode(change.sr_created_in_period, to_number(null), bead.sr_created_in_period,
4662 nvl(bead.sr_created_in_period,0) + change.sr_created_in_period),
4663 bead.oldest_email_open_date =
4664 decode(change.oldest_email_open_date,NULL,bead.oldest_email_open_date,
4665 decode(bead.oldest_email_open_date,NULL,change.oldest_email_open_date,
4666 decode(sign(bead.oldest_email_open_date - change.oldest_email_open_date),
4667 -1,bead.oldest_email_open_date, change.oldest_email_open_date))),
4668 bead.oldest_email_queue_date =
4669 decode(change.oldest_email_queue_date,NULL,bead.oldest_email_queue_date,
4670 decode(bead.oldest_email_queue_date,NULL,change.oldest_email_queue_date,
4671 decode(sign(bead.oldest_email_queue_date - change.oldest_email_queue_date),
4672 -1,bead.oldest_email_queue_date, change.oldest_email_queue_date))),
4673 bead.email_resp_time_in_period =
4674 decode(change.email_resp_time_in_period, to_number(null), bead.email_resp_time_in_period,
4675 nvl(bead.email_resp_time_in_period,0) + change.email_resp_time_in_period),
4676 bead.agent_resp_time_in_period =
4677 decode(change.agent_resp_time_in_period, to_number(null), bead.agent_resp_time_in_period,
4678 nvl(bead.agent_resp_time_in_period,0) + change.agent_resp_time_in_period),
4679 bead.accumulated_open_emails = decode(
4680 nvl(bead.accumulated_open_emails,0)+nvl(change.acc_open_emails,0),
4681 0,to_number(NULL),
4682 nvl(bead.accumulated_open_emails,0)+nvl(change.acc_open_emails,0)
4683 ),
4684 bead.accumulated_open_age = decode(
4685 nvl(bead.accumulated_open_age,0)+nvl(change.acc_open_age,0),
4686 0,to_number(NULL),
4687 nvl(bead.accumulated_open_age,0)+nvl(change.acc_open_age,0)
4688 ),
4689 bead.accumulated_emails_in_queue = decode(
4690 nvl(bead.accumulated_emails_in_queue,0)+nvl(change.acc_emails_in_queue,0),
4694 bead.accumulated_queue_time = decode(
4691 0,to_number(null),
4692 nvl(bead.accumulated_emails_in_queue,0)+nvl(change.acc_emails_in_queue,0)
4693 ),
4695 nvl(bead.accumulated_queue_time,0)+nvl(change.acc_queue_time,0),
4696 0,to_number(null),
4697 nvl(bead.accumulated_queue_time,0)+nvl(change.acc_queue_time,0)
4698 ),
4699 bead.accumulated_emails_one_day = decode(
4700 nvl(bead.accumulated_emails_one_day,0)+nvl(change.acc_emails_one_day,0),
4701 0,to_number(null),
4702 nvl(bead.accumulated_emails_one_day,0)+nvl(change.acc_emails_one_day,0)
4703 ),
4704 bead.accumulated_emails_three_days = decode(
4705 nvl(bead.accumulated_emails_three_days,0)+nvl(change.acc_emails_three_days,0),
4706 0,to_number(null),
4707 nvl(bead.accumulated_emails_three_days,0)+nvl(change.acc_emails_three_days,0)
4708 ),
4709 bead.accumulated_emails_week = decode(
4710 nvl(bead.accumulated_emails_week,0)+nvl(change.acc_emails_week,0),
4711 0,to_number(null),
4712 nvl(bead.accumulated_emails_week,0)+nvl(change.acc_emails_week,0)
4713 ),
4714 bead.accumulated_emails_week_plus = decode(
4715 nvl(bead.accumulated_emails_week_plus,0)+nvl(change.acc_emails_week_plus,0),
4716 0,to_number(null),
4717 nvl(bead.accumulated_emails_week_plus,0)+nvl(change.acc_emails_week_plus,0)
4718 ),
4719 bead.emails_orr_count_in_period = decode(change.emails_orr_count_in_period,to_number(null), bead.emails_orr_count_in_period ,
4720 nvl(bead.emails_orr_count_in_period,0) + change.emails_orr_count_in_period),
4721 bead.EMAILS_AUTO_REPLIED_IN_PERIOD = decode(change.EMAILS_AUTO_REPLIED_IN_PERIOD,to_number(null),bead.EMAILS_AUTO_REPLIED_IN_PERIOD,
4722 nvl(bead.EMAILS_AUTO_REPLIED_IN_PERIOD,0) + change.EMAILS_AUTO_REPLIED_IN_PERIOD),
4723 bead.EMAILS_AUTO_DELETED_IN_PERIOD = decode(change.EMAILS_AUTO_DELETED_IN_PERIOD,to_number(null),bead.EMAILS_AUTO_DELETED_IN_PERIOD,
4724 nvl(bead.EMAILS_AUTO_DELETED_IN_PERIOD,0) + change.EMAILS_AUTO_DELETED_IN_PERIOD),
4725 bead.EMAILS_AUTO_RESOLVED_IN_PERIOD = decode(change.EMAILS_AUTO_RESOLVED_IN_PERIOD,to_number(null),bead.EMAILS_AUTO_RESOLVED_IN_PERIOD,
4726 nvl(bead.EMAILS_AUTO_RESOLVED_IN_PERIOD,0) + change.EMAILS_AUTO_RESOLVED_IN_PERIOD),
4727 bead.emails_composed_in_period = decode(change.emails_composed_in_period,to_number(null),bead.emails_composed_in_period,
4728 nvl(bead.emails_composed_in_period,0) + change.emails_composed_in_period),
4729 bead.emails_rerouted_in_period = decode(change.emails_rerouted_in_period,to_number(null),bead.emails_rerouted_in_period,
4730 nvl(bead.emails_rerouted_in_period,0) + change.emails_rerouted_in_period ),
4731 bead.leads_created_in_period = decode(change.leads_created_in_period,to_number(null),bead.leads_created_in_period,
4732 nvl(bead.leads_created_in_period,0) + change.leads_created_in_period ),
4733 bead.ONE_RSLN_IN_PERIOD = decode(
4734 nvl(bead.ONE_RSLN_IN_PERIOD ,0)+nvl(change.ONE_RSLN_IN_PERIOD ,0),
4735 0,to_number(null),
4736 nvl(bead.ONE_RSLN_IN_PERIOD ,0)+nvl(change.ONE_RSLN_IN_PERIOD ,0)
4737 ),
4738 bead.TWO_RSLN_IN_PERIOD = decode(
4739 nvl(bead.TWO_RSLN_IN_PERIOD ,0)+nvl(change.TWO_RSLN_IN_PERIOD ,0),
4740 0,to_number(null),
4741 nvl(bead.TWO_RSLN_IN_PERIOD ,0)+nvl(change.TWO_RSLN_IN_PERIOD ,0)
4742 ),
4743 bead.THREE_RSLN_IN_PERIOD = decode(
4744 nvl(bead.THREE_RSLN_IN_PERIOD ,0)+nvl(change.THREE_RSLN_IN_PERIOD ,0),
4745 0,to_number(null),
4746 nvl(bead.THREE_RSLN_IN_PERIOD ,0)+nvl(change.THREE_RSLN_IN_PERIOD ,0)
4747 ),
4748 bead.FOUR_RSLN_IN_PERIOD = decode(
4749 nvl(bead.FOUR_RSLN_IN_PERIOD ,0)+nvl(change.FOUR_RSLN_IN_PERIOD ,0),
4750 0,to_number(null),
4751 nvl(bead.FOUR_RSLN_IN_PERIOD ,0)+nvl(change.FOUR_RSLN_IN_PERIOD ,0)
4752 ),
4753 bead.INTERACTION_THREADS_IN_PERIOD = decode(
4754 nvl(bead.INTERACTION_THREADS_IN_PERIOD,0)+nvl(change.INTERACTION_THREADS_IN_PERIOD,0),
4755 0,to_number(null),
4756 nvl(bead.INTERACTION_THREADS_IN_PERIOD,0)+nvl(change.INTERACTION_THREADS_IN_PERIOD,0)
4757 ),
4758 bead.last_update_date = g_sysdate,
4759 bead.last_updated_by = g_user_id,
4760 bead.program_update_date = g_sysdate
4761 WHEN NOT MATCHED THEN INSERT
4762 (agent_id,
4763 email_account_id,
4764 email_classification_id,
4765 party_id,
4766 outcome_id,
4767 result_id,
4768 reason_id,
4769 time_id,
4770 period_type_id,
4771 period_start_date,
4772 period_start_time,
4773 created_by,
4774 creation_date,
4775 last_updated_by,
4776 last_update_date,
4777 emails_offered_in_period,
4778 emails_fetched_in_period,
4779 emails_replied_in_period,
4780 emails_rpld_by_goal_in_period,
4781 AGENT_EMAILS_RPLD_BY_GOAL,
4782 emails_deleted_in_period,
4783 emails_trnsfrd_out_in_period,
4784 emails_trnsfrd_in_in_period,
4785 emails_rsl_and_trfd_in_period,
4786 emails_assigned_in_period,
4787 emails_auto_routed_in_period,
4788 emails_auto_uptd_sr_in_period,
4789 sr_created_in_period,
4793 agent_resp_time_in_period,
4790 oldest_email_open_date,
4791 oldest_email_queue_date,
4792 email_resp_time_in_period,
4794 accumulated_open_emails,
4795 accumulated_open_age,
4796 accumulated_emails_in_queue,
4797 accumulated_queue_time,
4798 accumulated_emails_one_day,
4799 accumulated_emails_three_days,
4800 accumulated_emails_week,
4801 accumulated_emails_week_plus,
4802 emails_orr_count_in_period,
4803 EMAILS_AUTO_REPLIED_IN_PERIOD,
4804 EMAILS_AUTO_DELETED_IN_PERIOD,
4805 EMAILS_AUTO_RESOLVED_IN_PERIOD,
4806 emails_composed_in_period,
4807 emails_rerouted_in_period,
4808 leads_created_in_period,
4809 ONE_RSLN_IN_PERIOD,
4810 TWO_RSLN_IN_PERIOD,
4811 THREE_RSLN_IN_PERIOD,
4812 FOUR_RSLN_IN_PERIOD,
4813 INTERACTION_THREADS_IN_PERIOD,
4814 request_id,
4815 program_application_id,
4816 program_id,
4817 program_update_date )
4818 VALUES (
4819 change.agent_id,
4820 change.email_account_id,
4821 change.email_classification_id,
4822 change.party_id,
4823 change.outcome_id,
4824 change.result_id,
4825 change.reason_id,
4826 change.time_id,
4827 change.period_type_id,
4828 change.period_start_date,
4829 change.period_start_time,
4830 g_user_id,
4831 g_sysdate,
4832 g_user_id,
4833 g_sysdate,
4834 decode(change.emails_offered_in_period, 0, to_number(null), change.emails_offered_in_period),
4835 decode(change.emails_fetched_in_period, 0, to_number(null), change.emails_fetched_in_period),
4836 decode(change.emails_replied_in_period, 0, to_number(null), change.emails_replied_in_period),
4837 decode(change.emails_rpld_by_goal_in_period, 0, to_number(null), change.emails_rpld_by_goal_in_period),
4838 decode(change.AGENT_EMAILS_RPLD_BY_GOAL, 0, to_number(null), change.AGENT_EMAILS_RPLD_BY_GOAL),
4839 decode(change.emails_deleted_in_period, 0, to_number(null), change.emails_deleted_in_period),
4840 decode(change.emails_trnsfrd_out_in_period, 0, to_number(null), change.emails_trnsfrd_out_in_period),
4841 decode(change.emails_trnsfrd_in_in_period, 0, to_number(null), change.emails_trnsfrd_in_in_period),
4842 decode(change.emails_rsl_and_trfd_in_period, 0, to_number(null), change.emails_rsl_and_trfd_in_period),
4843 decode(change.emails_assigned_in_period, 0, to_number(null), change.emails_assigned_in_period),
4844 decode(change.emails_auto_routed_in_period, 0, to_number(null), change.emails_auto_routed_in_period),
4845 decode(change.emails_auto_uptd_sr_in_period, 0, to_number(null), change.emails_auto_uptd_sr_in_period),
4846 decode(change.sr_created_in_period, 0, to_number(null), change.sr_created_in_period),
4847 change.oldest_email_open_date,
4848 change.oldest_email_queue_date,
4849 decode(change.email_resp_time_in_period, 0, to_number(null), change.email_resp_time_in_period),
4850 decode(change.agent_resp_time_in_period, 0, to_number(null), change.agent_resp_time_in_period),
4851 decode(change.acc_open_emails, 0, to_number(null), change.acc_open_emails),
4852 decode(change.acc_open_age, 0, to_number(null), change.acc_open_age),
4853 decode(change.acc_emails_in_queue, 0, to_number(null), change.acc_emails_in_queue),
4854 decode(change.acc_queue_time, 0, to_number(null), change.acc_queue_time),
4855 decode(change.acc_emails_one_day, 0, to_number(null), change.acc_emails_one_day),
4856 decode(change.acc_emails_three_days, 0, to_number(null), change.acc_emails_three_days),
4857 decode(change.acc_emails_week, 0, to_number(null), change.acc_emails_week),
4858 decode(change.acc_emails_week_plus, 0, to_number(null), change.acc_emails_week_plus),
4859 decode(change.emails_orr_count_in_period,0,to_number(null),change.emails_orr_count_in_period),
4860 decode(change.EMAILS_AUTO_REPLIED_IN_PERIOD,0,to_number(null),change.EMAILS_AUTO_REPLIED_IN_PERIOD),
4861 decode(change.EMAILS_AUTO_DELETED_IN_PERIOD,0,to_number(null),change.EMAILS_AUTO_DELETED_IN_PERIOD),
4862 decode(change.EMAILS_AUTO_RESOLVED_IN_PERIOD,0,to_number(null),change.EMAILS_AUTO_RESOLVED_IN_PERIOD),
4863 decode(change.emails_composed_in_period,0,to_number(null),change.emails_composed_in_period),
4864 decode(change.emails_rerouted_in_period,0,to_number(null),change.emails_rerouted_in_period),
4865 decode(change.leads_created_in_period,0,to_number(null),change.leads_created_in_period),
4866 decode(change.ONE_RSLN_IN_PERIOD,0,to_number(null),change.ONE_RSLN_IN_PERIOD),
4867 decode(change.TWO_RSLN_IN_PERIOD,0,to_number(null),change.TWO_RSLN_IN_PERIOD),
4868 decode(change.THREE_RSLN_IN_PERIOD,0,to_number(null),change.THREE_RSLN_IN_PERIOD),
4869 decode(change.FOUR_RSLN_IN_PERIOD,0,to_number(null),change.FOUR_RSLN_IN_PERIOD),
4870 decode(change.INTERACTION_THREADS_IN_PERIOD,0,to_number(null),change.INTERACTION_THREADS_IN_PERIOD),
4871 g_request_id,
4872 g_program_appl_id,
4873 g_program_id,
4874 g_sysdate);
4875
4876 g_rows_ins_upd := g_rows_ins_upd + SQL%ROWCOUNT;
4877
4878 COMMIT;
4879
4880 write_log('Finished procedure rollup_negatives at : ' || to_char(sysdate, 'mm/dd/yyyy hh24:mi:ss'));
4881
4882 EXCEPTION
4883 WHEN OTHERS THEN
4884 write_log('Error in procedure rollup_negatives : Error : ' || sqlerrm);
4885 RAISE;
4886 END rollup_negatives;
4887
4888
4889 /*====================================================================
4890
4891 This procedure summarizes day level rows to week, period, Quarter and Year.
4892
4893 =======================================================================*/
4894
4895 PROCEDURE summarize_data IS
4896
4897 BEGIN
4898
4899 write_log('Start of the procedure summarize_data at : ' || to_char(sysdate, 'mm/dd/yyyy hh24:mi:ss'));
4900
4901 write_log('Merging day rows to week, month, quarter, year bucket in table bix_email_details_f');
4902
4906 SELECT
4903 /* Rollup half hour informations to day, week, month, quarter, year time bucket for table bix_email_details_f */
4904 MERGE INTO bix_email_details_stg bead
4905 USING (
4907 rlp.agent_id agent_id,
4908 rlp.email_account_id email_account_id,
4909 rlp.email_classification_id email_classification_id,
4910 rlp.party_id party_id,
4911 rlp.time_id time_id,
4912 rlp.period_type_id period_type_id,
4913 rlp.period_start_date period_start_date,
4914 rlp.period_start_time period_start_time,
4915 rlp.outcome_id outcome_id,
4916 rlp.result_id result_id,
4917 rlp.reason_id reason_id,
4918 decode(sum(rlp.emails_offered_in_period), 0, to_number(null), sum(rlp.emails_offered_in_period))
4919 emails_offered_in_period,
4920 decode(sum(rlp.emails_fetched_in_period), 0, to_number(null), sum(rlp.emails_fetched_in_period))
4921 emails_fetched_in_period,
4922 decode(sum(rlp.emails_replied_in_period), 0, to_number(null), sum(rlp.emails_replied_in_period))
4923 emails_replied_in_period,
4924 decode(sum(rlp.emails_rpld_by_goal_in_period), 0, to_number(null), sum(rlp.emails_rpld_by_goal_in_period))
4925 emails_rpld_by_goal_in_period,
4926 decode(sum(rlp.AGENT_EMAILS_RPLD_BY_GOAL), 0, to_number(null), sum(rlp.AGENT_EMAILS_RPLD_BY_GOAL))
4927 AGENT_EMAILS_RPLD_BY_GOAL,
4928 decode(sum(rlp.emails_deleted_in_period), 0, to_number(null), sum(rlp.emails_deleted_in_period))
4929 emails_deleted_in_period,
4930 decode(sum(rlp.emails_trnsfrd_out_in_period), 0, to_number(null), sum(rlp.emails_trnsfrd_out_in_period))
4931 emails_trnsfrd_out_in_period,
4932 decode(sum(rlp.emails_trnsfrd_in_in_period), 0, to_number(null), sum(rlp.emails_trnsfrd_in_in_period))
4933 emails_trnsfrd_in_in_period,
4934 decode(sum(rlp.emails_rsl_and_trfd_in_period), 0, to_number(null), sum(rlp.emails_rsl_and_trfd_in_period))
4935 emails_rsl_and_trfd_in_period,
4936 decode(sum(rlp.emails_assigned_in_period), 0, to_number(null), sum(rlp.emails_assigned_in_period))
4937 emails_assigned_in_period,
4938 decode(sum(rlp.emails_auto_routed_in_period), 0, to_number(null), sum(rlp.emails_auto_routed_in_period))
4939 emails_auto_routed_in_period,
4940 decode(sum(rlp.emails_auto_uptd_sr_in_period), 0, to_number(null), sum(rlp.emails_auto_uptd_sr_in_period))
4941 emails_auto_uptd_sr_in_period,
4942 decode(sum(rlp.sr_created_in_period), 0, to_number(null), sum(rlp.sr_created_in_period))
4943 sr_created_in_period,
4944 to_date(null) oldest_email_open_date,
4945 to_date(null) oldest_email_queue_date,
4946 decode(sum(rlp.email_resp_time_in_period), 0, to_number(null), sum(rlp.email_resp_time_in_period))
4947 email_resp_time_in_period,
4948 decode(sum(rlp.agent_resp_time_in_period), 0, to_number(null), sum(rlp.agent_resp_time_in_period))
4949 agent_resp_time_in_period,
4950 min(rlp.acc_open_emails) acc_open_emails,
4951 to_number(null) acc_open_age,
4952 min(rlp.acc_emails_in_queue) acc_emails_in_queue,
4953 to_number(null) acc_queue_time,
4954 min(rlp.acc_emails_one_day) acc_emails_one_day,
4955 min(rlp.acc_emails_three_days) acc_emails_three_days,
4956 min(rlp.acc_emails_week) acc_emails_week,
4957 min(rlp.acc_emails_week_plus) acc_emails_week_plus,
4958 decode(sum(rlp.emails_orr_count_in_period),0,to_number(null),sum(emails_orr_count_in_period)) emails_orr_count_in_period,
4959 decode(sum(rlp.EMAILS_AUTO_REPLIED_IN_PERIOD),0,to_number(null),sum(EMAILS_AUTO_REPLIED_IN_PERIOD)) EMAILS_AUTO_REPLIED_IN_PERIOD,
4960 decode(sum(rlp.EMAILS_AUTO_DELETED_IN_PERIOD),0,to_number(null),sum(EMAILS_AUTO_DELETED_IN_PERIOD)) EMAILS_AUTO_DELETED_IN_PERIOD,
4961 decode(sum(rlp.EMAILS_AUTO_RESOLVED_IN_PERIOD),0,to_number(null),sum(EMAILS_AUTO_RESOLVED_IN_PERIOD)) EMAILS_AUTO_RESOLVED_IN_PERIOD,
4962 decode(sum(rlp.emails_composed_in_period),0,to_number(null),sum(emails_composed_in_period)) emails_composed_in_period,
4963 decode(sum(rlp.emails_rerouted_in_period),0,to_number(null),sum(emails_rerouted_in_period)) emails_rerouted_in_period,
4964 decode(sum(rlp.leads_created_in_period),0,to_number(null),sum(leads_created_in_period)) leads_created_in_period
4965 FROM (
4966 SELECT
4967 inv2.agent_id agent_id,
4968 inv2.email_account_id email_account_id,
4969 inv2.email_classification_id email_classification_id,
4970 inv2.party_id party_id,
4971 inv2.outcome_id outcome_id,
4972 inv2.result_id result_id,
4973 inv2.reason_id reason_id,
4974 decode(inv2.week_id, null, decode(inv2.ent_period_id, null,
4975 decode(inv2.ent_qtr_id, null, decode(inv2.ent_year_id, null, to_number(null), inv2.ent_year_id),
4976 inv2.ent_qtr_id), inv2.ent_period_id), inv2.week_id) time_id,
4977 decode(inv2.week_id, null, decode(inv2.ent_period_id, null,
4978 decode(inv2.ent_qtr_id, null, decode(inv2.ent_year_id, null, to_number(null),
4979 128), 64), 32), 16) period_type_id,
4983 '00:00' period_start_time,
4980 decode(inv2.week_id, null, decode(inv2.ent_period_id, null,
4981 decode(inv2.ent_qtr_id, null, decode(inv2.ent_year_id, null, to_date(null), min(inv2.ent_year_start_date)),
4982 min(inv2.ent_qtr_start_date)), min(inv2.ent_period_start_date)), min(inv2.week_start_date)) period_start_date,
4984 sum(inv2.emails_offered_in_period) emails_offered_in_period,
4985 sum(inv2.emails_fetched_in_period) emails_fetched_in_period,
4986 sum(inv2.emails_replied_in_period) emails_replied_in_period,
4987 sum(inv2.emails_rpld_by_goal_in_period) emails_rpld_by_goal_in_period,
4988 sum(inv2.AGENT_EMAILS_RPLD_BY_GOAL) AGENT_EMAILS_RPLD_BY_GOAL,
4989 sum(inv2.emails_deleted_in_period) emails_deleted_in_period,
4990 sum(inv2.emails_trnsfrd_out_in_period) emails_trnsfrd_out_in_period,
4991 sum(inv2.emails_trnsfrd_in_in_period) emails_trnsfrd_in_in_period,
4992 sum(inv2.emails_rsl_and_trfd_in_period) emails_rsl_and_trfd_in_period,
4993 sum(inv2.emails_assigned_in_period) emails_assigned_in_period,
4994 sum(inv2.emails_auto_routed_in_period) emails_auto_routed_in_period,
4995 sum(inv2.emails_auto_uptd_sr_in_period) emails_auto_uptd_sr_in_period,
4996 sum(inv2.sr_created_in_period) sr_created_in_period,
4997 sum(inv2.email_resp_time_in_period) email_resp_time_in_period,
4998 sum(inv2.agent_resp_time_in_period) agent_resp_time_in_period,
4999 sum(inv2.emails_orr_count_in_period) emails_orr_count_in_period,
5000 sum(inv2.EMAILS_AUTO_REPLIED_IN_PERIOD) EMAILS_AUTO_REPLIED_IN_PERIOD,
5001 sum(inv2.EMAILS_AUTO_DELETED_IN_PERIOD) EMAILS_AUTO_DELETED_IN_PERIOD,
5002 sum(inv2.EMAILS_AUTO_RESOLVED_IN_PERIOD) EMAILS_AUTO_RESOLVED_IN_PERIOD,
5003 sum(inv2.emails_composed_in_period) emails_composed_in_period,
5004 decode(inv2.week_id, null, decode(inv2.ent_period_id, null,
5005 decode(inv2.ent_qtr_id, null, decode(inv2.ent_year_id, null, to_number(null), min(inv2.year_acc_open_emails)),
5006 min(inv2.qtr_acc_open_emails)), min(inv2.period_acc_open_emails)), min(inv2.week_acc_open_emails)) acc_open_emails,
5007 decode(inv2.week_id, null, decode(inv2.ent_period_id, null,
5008 decode(inv2.ent_qtr_id, null, decode(inv2.ent_year_id, null, to_number(null), min(inv2.year_acc_emails_in_queue)),
5009 min(inv2.qtr_acc_emails_in_queue)), min(inv2.period_acc_emails_in_queue)), min(inv2.week_acc_emails_in_queue))
5010 acc_emails_in_queue,
5011 decode(inv2.week_id, null, decode(inv2.ent_period_id, null,
5012 decode(inv2.ent_qtr_id, null, decode(inv2.ent_year_id, null, to_number(null), min(inv2.year_acc_emails_one_day)),
5013 min(inv2.qtr_acc_emails_one_day)), min(inv2.period_acc_emails_one_day)), min(inv2.week_acc_emails_one_day)) acc_emails_one_day,
5014 decode(inv2.week_id, null, decode(inv2.ent_period_id, null,
5015 decode(inv2.ent_qtr_id, null, decode(inv2.ent_year_id, null, to_number(null), min(inv2.year_acc_emails_three_days)),
5016 min(inv2.qtr_acc_emails_three_days)), min(inv2.period_acc_emails_three_days)),
5017 min(inv2.week_acc_emails_three_days)) acc_emails_three_days,
5018 decode(inv2.week_id, null, decode(inv2.ent_period_id, null,
5019 decode(inv2.ent_qtr_id, null, decode(inv2.ent_year_id, null, to_number(null), min(inv2.year_acc_emails_week)),
5020 min(inv2.qtr_acc_emails_week)), min(inv2.period_acc_emails_week)), min(inv2.week_acc_emails_week)) acc_emails_week,
5021 decode(inv2.week_id, null, decode(inv2.ent_period_id, null,
5022 decode(inv2.ent_qtr_id, null, decode(inv2.ent_year_id, null, to_number(null), min(inv2.year_acc_emails_week_plus)),
5023 min(inv2.qtr_acc_emails_week_plus)), min(inv2.period_acc_emails_week_plus)),
5024 min(inv2.week_acc_emails_week_plus)) acc_emails_week_plus,
5025 sum(inv2.EMAILS_REROUTED_IN_PERIOD) EMAILS_REROUTED_IN_PERIOD,
5026 sum(inv2.LEADS_CREATED_IN_PERIOD) LEADS_CREATED_IN_PERIOD
5027 FROM
5028 (SELECT /*+ index(bead BIX_EMAIL_DETAILS_F_N1) */
5029 bead.agent_id agent_id,
5030 bead.email_account_id email_account_id,
5031 bead.email_classification_id email_classification_id,
5032 bead.party_id party_id,
5033 bead.outcome_id,
5034 bead.result_id,
5035 bead.reason_id,
5036 ftd.ent_year_id ent_year_id,
5037 ftd.ent_year_start_date ent_year_start_date,
5038 ftd.ent_qtr_id ent_qtr_id,
5039 ftd.ent_qtr_start_date ent_qtr_start_date,
5040 ftd.ent_period_id ent_period_id,
5041 ftd.ent_period_start_date ent_period_start_date,
5042 ftd.week_id week_id,
5043 ftd.week_start_date week_start_date,
5044 bead.period_start_date period_start_date,
5045 bead.emails_offered_in_period emails_offered_in_period,
5046 bead.emails_fetched_in_period emails_fetched_in_period,
5047 bead.emails_replied_in_period emails_replied_in_period,
5048 bead.emails_rpld_by_goal_in_period emails_rpld_by_goal_in_period,
5049 bead.AGENT_EMAILS_RPLD_BY_GOAL AGENT_EMAILS_RPLD_BY_GOAL,
5050 bead.emails_deleted_in_period emails_deleted_in_period,
5051 bead.emails_trnsfrd_out_in_period emails_trnsfrd_out_in_period,
5052 bead.emails_trnsfrd_in_in_period emails_trnsfrd_in_in_period,
5053 bead.emails_rsl_and_trfd_in_period emails_rsl_and_trfd_in_period,
5054 bead.emails_assigned_in_period emails_assigned_in_period,
5055 bead.emails_auto_routed_in_period emails_auto_routed_in_period,
5056 bead.emails_auto_uptd_sr_in_period emails_auto_uptd_sr_in_period,
5057 bead.sr_created_in_period sr_created_in_period,
5058 bead.email_resp_time_in_period email_resp_time_in_period,
5059 bead.agent_resp_time_in_period agent_resp_time_in_period,
5060 bead.emails_orr_count_in_period emails_orr_count_in_period,
5061 bead.EMAILS_AUTO_REPLIED_IN_PERIOD EMAILS_AUTO_REPLIED_IN_PERIOD,
5062 bead.EMAILS_AUTO_DELETED_IN_PERIOD EMAILS_AUTO_DELETED_IN_PERIOD,
5063 bead.EMAILS_AUTO_RESOLVED_IN_PERIOD EMAILS_AUTO_RESOLVED_IN_PERIOD,
5067 first_value(bead.accumulated_open_emails)
5064 bead.emails_composed_in_period emails_composed_in_period,
5065 bead.emails_rerouted_in_period emails_rerouted_in_period,
5066 bead.leads_created_in_period leads_created_in_period,
5068 over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
5069 bead.outcome_id, bead.result_id, bead.reason_id,
5070 ftd.week_id
5071 order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
5072 lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) week_acc_open_emails,
5073 first_value(bead.accumulated_open_emails)
5074 over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
5075 bead.outcome_id, bead.result_id, bead.reason_id,
5076 ftd.ent_period_id
5077 order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
5078 lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) period_acc_open_emails,
5079 first_value(bead.accumulated_open_emails)
5080 over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
5081 bead.outcome_id, bead.result_id, bead.reason_id,
5082 ftd.ent_qtr_id
5083 order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
5084 lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) qtr_acc_open_emails,
5085 first_value(bead.accumulated_open_emails)
5086 over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
5087 bead.outcome_id, bead.result_id, bead.reason_id,
5088 ftd.ent_year_id
5089 order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
5090 lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) year_acc_open_emails,
5091 first_value(bead.accumulated_emails_in_queue)
5092 over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
5093 bead.outcome_id, bead.result_id, bead.reason_id,
5094 ftd.week_id
5095 order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
5096 lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) week_acc_emails_in_queue,
5097 first_value(bead.accumulated_emails_in_queue)
5098 over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
5099 bead.outcome_id, bead.result_id, bead.reason_id,
5100 ftd.ent_period_id
5101 order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
5102 lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) period_acc_emails_in_queue,
5103 first_value(bead.accumulated_emails_in_queue)
5104 over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
5105 bead.outcome_id, bead.result_id, bead.reason_id,
5106 ftd.ent_qtr_id
5107 order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
5108 lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) qtr_acc_emails_in_queue,
5109 first_value(bead.accumulated_emails_in_queue)
5110 over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
5111 bead.outcome_id, bead.result_id, bead.reason_id,
5112 ftd.ent_year_id
5113 order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
5114 lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) year_acc_emails_in_queue,
5115 first_value(bead.accumulated_emails_one_day)
5116 over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
5117 bead.outcome_id, bead.result_id, bead.reason_id,
5118 ftd.week_id
5119 order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
5120 lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) week_acc_emails_one_day,
5121 first_value(bead.accumulated_emails_one_day)
5122 over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
5123 bead.outcome_id, bead.result_id, bead.reason_id,
5124 ftd.ent_period_id
5125 order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
5126 lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) period_acc_emails_one_day,
5127 first_value(bead.accumulated_emails_one_day)
5128 over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
5129 bead.outcome_id, bead.result_id, bead.reason_id,
5130 ftd.ent_qtr_id
5131 order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
5132 lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) qtr_acc_emails_one_day,
5133 first_value(bead.accumulated_emails_one_day)
5134 over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
5135 bead.outcome_id, bead.result_id, bead.reason_id,
5136 ftd.ent_year_id
5137 order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
5138 lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) year_acc_emails_one_day,
5139 first_value(bead.accumulated_emails_three_days)
5140 over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
5141 bead.outcome_id, bead.result_id, bead.reason_id,
5142 ftd.week_id
5146 over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
5143 order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
5144 lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) week_acc_emails_three_days,
5145 first_value(bead.accumulated_emails_three_days)
5147 bead.outcome_id, bead.result_id, bead.reason_id,
5148 ftd.ent_period_id
5149 order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
5150 lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) period_acc_emails_three_days,
5151 first_value(bead.accumulated_emails_three_days)
5152 over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
5153 bead.outcome_id, bead.result_id, bead.reason_id,
5154 ftd.ent_qtr_id
5155 order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
5156 lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) qtr_acc_emails_three_days,
5157 first_value(bead.accumulated_emails_three_days)
5158 over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
5159 bead.outcome_id, bead.result_id, bead.reason_id,
5160 ftd.ent_year_id
5161 order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
5162 lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) year_acc_emails_three_days,
5163 first_value(bead.accumulated_emails_week)
5164 over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
5165 bead.outcome_id, bead.result_id, bead.reason_id,
5166 ftd.week_id
5167 order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
5168 lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) week_acc_emails_week,
5169 first_value(bead.accumulated_emails_week)
5170 over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
5171 bead.outcome_id, bead.result_id, bead.reason_id,
5172 ftd.ent_period_id
5173 order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
5174 lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) period_acc_emails_week,
5175 first_value(bead.accumulated_emails_week)
5176 over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
5177 bead.outcome_id, bead.result_id, bead.reason_id,
5178 ftd.ent_qtr_id
5179 order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
5180 lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) qtr_acc_emails_week,
5181 first_value(bead.accumulated_emails_week)
5182 over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
5183 bead.outcome_id, bead.result_id, bead.reason_id,
5184 ftd.ent_year_id
5185 order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
5186 lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) year_acc_emails_week,
5187 first_value(bead.accumulated_emails_week_plus)
5188 over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
5189 bead.outcome_id, bead.result_id, bead.reason_id,
5190 ftd.week_id
5191 order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
5192 lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) week_acc_emails_week_plus,
5193 first_value(bead.accumulated_emails_week_plus)
5194 over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
5195 bead.outcome_id, bead.result_id, bead.reason_id,
5196 ftd.ent_period_id
5197 order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
5198 lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) period_acc_emails_week_plus,
5199 first_value(bead.accumulated_emails_week_plus)
5200 over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
5201 bead.outcome_id, bead.result_id, bead.reason_id,
5202 ftd.ent_qtr_id
5203 order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
5204 lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) qtr_acc_emails_week_plus,
5205 first_value(bead.accumulated_emails_week_plus)
5206 over (partition by bead.agent_id, bead.email_account_id, bead.email_classification_id, bead.party_id,
5207 bead.outcome_id, bead.result_id, bead.reason_id,
5208 ftd.ent_year_id
5209 order by to_date(to_char(bead.period_start_date, 'dd/mm/yyyy ') ||
5210 lpad(bead.period_start_time, 5, '0'), 'dd/mm/yyyy hh24:mi') desc) year_acc_emails_week_plus
5211 FROM bix_email_details_stg bead,
5212 fii_time_day ftd
5213 WHERE bead.time_id = ftd.report_date_julian
5214 AND bead.period_type_id = 1
5215 --AND bead.request_id = g_request_id
5216 ) inv2
5217 GROUP BY
5218 inv2.agent_id,
5219 inv2.email_account_id,
5220 inv2.email_classification_id,
5221 inv2.party_id,
5222 inv2.outcome_id,
5223 inv2.result_id,
5224 inv2.reason_id,
5225 ROLLUP(
5226 inv2.ent_year_id,
5227 inv2.ent_qtr_id,
5228 inv2.ent_period_id,
5229 inv2.week_id)
5230 HAVING
5234 GROUP BY
5231 decode(inv2.week_id, null, decode(inv2.ent_period_id, null,
5232 decode(inv2.ent_qtr_id, null, decode(inv2.ent_year_id, null, to_number(null),
5233 128), 64), 32), 16) IS NOT NULL) rlp
5235 rlp.agent_id,
5236 rlp.email_account_id,
5237 rlp.email_classification_id,
5238 rlp.party_id,
5239 rlp.time_id,
5240 rlp.period_type_id,
5241 rlp.period_start_date,
5242 rlp.period_start_time,
5243 rlp.outcome_id,
5244 rlp.result_id,
5245 rlp.reason_id) change
5246 ON ( bead.agent_id = change.agent_id
5247 AND bead.email_account_id = change.email_account_id
5248 AND bead.email_classification_id = change.email_classification_id
5249 AND bead.party_id = change.party_id
5250 AND bead.time_id = change.time_id
5251 AND bead.period_type_id = change.period_type_id
5252 AND bead.period_start_date = change.period_start_date
5253 AND bead.period_start_time = change.period_start_time
5254 AND bead.outcome_id = change.outcome_id
5255 AND bead.result_id = change.result_id
5256 AND bead.reason_id = change.reason_id )
5257 WHEN MATCHED THEN
5258 UPDATE SET
5259 bead.emails_offered_in_period =
5260 decode(change.emails_offered_in_period, to_number(null), bead.emails_offered_in_period,
5261 nvl(bead.emails_offered_in_period,0) + change.emails_offered_in_period),
5262 bead.emails_fetched_in_period =
5263 decode(change.emails_fetched_in_period, to_number(null), bead.emails_fetched_in_period,
5264 nvl(bead.emails_fetched_in_period,0) + change.emails_fetched_in_period),
5265 bead.emails_replied_in_period =
5266 decode(change.emails_replied_in_period, to_number(null), bead.emails_replied_in_period,
5267 nvl(bead.emails_replied_in_period,0) + change.emails_replied_in_period),
5268 bead.emails_rpld_by_goal_in_period =
5269 decode(change.emails_rpld_by_goal_in_period, to_number(null), bead.emails_rpld_by_goal_in_period,
5270 nvl(bead.emails_rpld_by_goal_in_period,0) + change.emails_rpld_by_goal_in_period),
5271 bead.AGENT_EMAILS_RPLD_BY_GOAL =
5272 decode(change.AGENT_EMAILS_RPLD_BY_GOAL, to_number(null), bead.AGENT_EMAILS_RPLD_BY_GOAL,
5273 nvl(bead.AGENT_EMAILS_RPLD_BY_GOAL,0) + change.AGENT_EMAILS_RPLD_BY_GOAL),
5274 bead.emails_deleted_in_period =
5275 decode(change.emails_deleted_in_period, to_number(null), bead.emails_deleted_in_period,
5276 nvl(bead.emails_deleted_in_period,0) + change.emails_deleted_in_period),
5277 bead.emails_trnsfrd_out_in_period =
5278 decode(change.emails_trnsfrd_out_in_period, to_number(null), bead.emails_trnsfrd_out_in_period,
5279 nvl(bead.emails_trnsfrd_out_in_period,0) + change.emails_trnsfrd_out_in_period),
5280 bead.emails_trnsfrd_in_in_period =
5281 decode(change.emails_trnsfrd_in_in_period, to_number(null), bead.emails_trnsfrd_in_in_period,
5282 nvl(bead.emails_trnsfrd_in_in_period,0) + change.emails_trnsfrd_in_in_period),
5283 bead.emails_rsl_and_trfd_in_period =
5284 decode(change.emails_rsl_and_trfd_in_period,to_number(null),bead.emails_rsl_and_trfd_in_period,
5285 nvl(bead.emails_rsl_and_trfd_in_period,0) + change.emails_rsl_and_trfd_in_period),
5286 bead.emails_assigned_in_period =
5287 decode(change.emails_assigned_in_period, to_number(null), bead.emails_assigned_in_period,
5288 nvl(bead.emails_assigned_in_period,0) + change.emails_assigned_in_period),
5289 bead.emails_auto_routed_in_period =
5290 decode(change.emails_auto_routed_in_period, to_number(null), bead.emails_auto_routed_in_period,
5291 nvl(bead.emails_auto_routed_in_period,0) + change.emails_auto_routed_in_period),
5292 bead.emails_auto_uptd_sr_in_period =
5293 decode(change.emails_auto_uptd_sr_in_period, to_number(null), bead.emails_auto_uptd_sr_in_period,
5294 nvl(bead.emails_auto_uptd_sr_in_period,0) + change.emails_auto_uptd_sr_in_period),
5295 bead.sr_created_in_period = decode(change.sr_created_in_period, to_number(null), bead.sr_created_in_period,
5296 nvl(bead.sr_created_in_period,0) + change.sr_created_in_period),
5297 bead.oldest_email_open_date =
5298 decode(change.oldest_email_open_date,NULL,bead.oldest_email_open_date,
5299 decode(bead.oldest_email_open_date,NULL,change.oldest_email_open_date,
5300 decode(sign(bead.oldest_email_open_date - change.oldest_email_open_date),
5301 -1,bead.oldest_email_open_date, change.oldest_email_open_date))),
5302 bead.oldest_email_queue_date =
5303 decode(change.oldest_email_queue_date,NULL,bead.oldest_email_queue_date,
5304 decode(bead.oldest_email_queue_date,NULL,change.oldest_email_queue_date,
5305 decode(sign(bead.oldest_email_queue_date - change.oldest_email_queue_date),
5306 -1,bead.oldest_email_queue_date, change.oldest_email_queue_date))),
5307 bead.email_resp_time_in_period =
5308 decode(change.email_resp_time_in_period, to_number(null), bead.email_resp_time_in_period,
5309 nvl(bead.email_resp_time_in_period,0) + change.email_resp_time_in_period),
5310 bead.agent_resp_time_in_period =
5311 decode(change.agent_resp_time_in_period, to_number(null), bead.agent_resp_time_in_period,
5312 nvl(bead.agent_resp_time_in_period,0) + change.agent_resp_time_in_period),
5313 bead.accumulated_open_emails = change.acc_open_emails,
5314 bead.accumulated_open_age = change.acc_open_age,
5315 bead.accumulated_emails_in_queue = change.acc_emails_in_queue,
5316 bead.accumulated_queue_time = change.acc_queue_time,
5317 bead.accumulated_emails_one_day = change.acc_emails_one_day,
5318 bead.accumulated_emails_three_days = change.acc_emails_three_days,
5319 bead.accumulated_emails_week = change.acc_emails_week,
5320 bead.accumulated_emails_week_plus = change.acc_emails_week_plus,
5321 bead.emails_orr_count_in_period = decode(change.emails_orr_count_in_period,to_number(null), bead.emails_orr_count_in_period ,
5325 bead.EMAILS_AUTO_DELETED_IN_PERIOD = decode(change.EMAILS_AUTO_DELETED_IN_PERIOD,to_number(null),bead.EMAILS_AUTO_DELETED_IN_PERIOD,
5322 nvl(bead.emails_orr_count_in_period,0) + change.emails_orr_count_in_period),
5323 bead.EMAILS_AUTO_REPLIED_IN_PERIOD = decode(change.EMAILS_AUTO_REPLIED_IN_PERIOD,to_number(null),bead.EMAILS_AUTO_REPLIED_IN_PERIOD,
5324 nvl(bead.EMAILS_AUTO_REPLIED_IN_PERIOD,0) + change.EMAILS_AUTO_REPLIED_IN_PERIOD),
5326 nvl(bead.EMAILS_AUTO_DELETED_IN_PERIOD,0) + change.EMAILS_AUTO_DELETED_IN_PERIOD),
5327 bead.EMAILS_AUTO_RESOLVED_IN_PERIOD = decode(change.EMAILS_AUTO_RESOLVED_IN_PERIOD,to_number(null),bead.EMAILS_AUTO_RESOLVED_IN_PERIOD,
5328 nvl(bead.EMAILS_AUTO_RESOLVED_IN_PERIOD,0) + change.EMAILS_AUTO_RESOLVED_IN_PERIOD),
5329 bead.emails_composed_in_period = decode(change.emails_composed_in_period,to_number(null),bead.emails_composed_in_period,
5330 nvl(bead.emails_composed_in_period,0) + change.emails_composed_in_period),
5331 bead.emails_rerouted_in_period = decode(change.emails_rerouted_in_period,to_number(null),bead.emails_rerouted_in_period,
5332 nvl(bead.emails_rerouted_in_period,0) + change.emails_rerouted_in_period ),
5333 bead.leads_created_in_period = decode(change.leads_created_in_period,to_number(null),bead.leads_created_in_period,
5334 nvl(bead.leads_created_in_period,0) + change.leads_created_in_period ),
5335 bead.last_update_date = g_sysdate,
5336 bead.last_updated_by = g_user_id,
5337 bead.program_update_date = g_sysdate
5338 WHEN NOT MATCHED THEN INSERT
5339 (agent_id,
5340 email_account_id,
5341 email_classification_id,
5342 party_id,
5343 outcome_id,
5344 result_id,
5345 reason_id,
5346 time_id,
5347 period_type_id,
5348 period_start_date,
5349 period_start_time,
5350 created_by,
5351 creation_date,
5352 last_updated_by,
5353 last_update_date,
5354 emails_offered_in_period,
5355 emails_fetched_in_period,
5356 emails_replied_in_period,
5357 emails_rpld_by_goal_in_period,
5358 AGENT_EMAILS_RPLD_BY_GOAL,
5359 emails_deleted_in_period,
5360 emails_trnsfrd_out_in_period,
5361 emails_trnsfrd_in_in_period,
5362 emails_rsl_and_trfd_in_period,
5363 emails_assigned_in_period,
5364 emails_auto_routed_in_period,
5365 emails_auto_uptd_sr_in_period,
5366 sr_created_in_period,
5367 oldest_email_open_date,
5368 oldest_email_queue_date,
5369 email_resp_time_in_period,
5370 agent_resp_time_in_period,
5371 accumulated_open_emails,
5372 accumulated_open_age,
5373 accumulated_emails_in_queue,
5374 accumulated_queue_time,
5375 accumulated_emails_one_day,
5376 accumulated_emails_three_days,
5377 accumulated_emails_week,
5378 accumulated_emails_week_plus,
5379 emails_orr_count_in_period,
5380 EMAILS_AUTO_REPLIED_IN_PERIOD,
5381 EMAILS_AUTO_DELETED_IN_PERIOD,
5382 EMAILS_AUTO_RESOLVED_IN_PERIOD,
5383 emails_composed_in_period,
5384 emails_rerouted_in_period,
5385 leads_created_in_period,
5386 request_id,
5387 program_application_id,
5388 program_id,
5389 program_update_date )
5390 VALUES (
5391 change.agent_id,
5392 change.email_account_id,
5393 change.email_classification_id,
5394 change.party_id,
5395 change.outcome_id,
5396 change.result_id,
5397 change.reason_id,
5398 change.time_id,
5399 change.period_type_id,
5400 change.period_start_date,
5401 change.period_start_time,
5402 g_user_id,
5403 g_sysdate,
5404 g_user_id,
5405 g_sysdate,
5406 decode(change.emails_offered_in_period, 0, to_number(null), change.emails_offered_in_period),
5407 decode(change.emails_fetched_in_period, 0, to_number(null), change.emails_fetched_in_period),
5408 decode(change.emails_replied_in_period, 0, to_number(null), change.emails_replied_in_period),
5409 decode(change.emails_rpld_by_goal_in_period, 0, to_number(null), change.emails_rpld_by_goal_in_period),
5410 decode(change.AGENT_EMAILS_RPLD_BY_GOAL, 0, to_number(null), change.AGENT_EMAILS_RPLD_BY_GOAL),
5411 decode(change.emails_deleted_in_period, 0, to_number(null), change.emails_deleted_in_period),
5412 decode(change.emails_trnsfrd_out_in_period, 0, to_number(null), change.emails_trnsfrd_out_in_period),
5413 decode(change.emails_trnsfrd_in_in_period, 0, to_number(null), change.emails_trnsfrd_in_in_period),
5414 decode(change.emails_rsl_and_trfd_in_period, 0, to_number(null), change.emails_rsl_and_trfd_in_period),
5415 decode(change.emails_assigned_in_period, 0, to_number(null), change.emails_assigned_in_period),
5416 decode(change.emails_auto_routed_in_period, 0, to_number(null), change.emails_auto_routed_in_period),
5417 decode(change.emails_auto_uptd_sr_in_period, 0, to_number(null), change.emails_auto_uptd_sr_in_period),
5418 decode(change.sr_created_in_period, 0, to_number(null), change.sr_created_in_period),
5419 change.oldest_email_open_date,
5420 change.oldest_email_queue_date,
5421 decode(change.email_resp_time_in_period, 0, to_number(null), change.email_resp_time_in_period),
5422 decode(change.agent_resp_time_in_period, 0, to_number(null), change.agent_resp_time_in_period),
5423 decode(change.acc_open_emails, 0, to_number(null), change.acc_open_emails),
5424 decode(change.acc_open_age, 0, to_number(null), change.acc_open_age),
5425 decode(change.acc_emails_in_queue, 0, to_number(null), change.acc_emails_in_queue),
5426 decode(change.acc_queue_time, 0, to_number(null), change.acc_queue_time),
5427 decode(change.acc_emails_one_day, 0, to_number(null), change.acc_emails_one_day),
5428 decode(change.acc_emails_three_days, 0, to_number(null), change.acc_emails_three_days),
5432 decode(change.EMAILS_AUTO_REPLIED_IN_PERIOD,0,to_number(null),change.EMAILS_AUTO_REPLIED_IN_PERIOD),
5429 decode(change.acc_emails_week, 0, to_number(null), change.acc_emails_week),
5430 decode(change.acc_emails_week_plus, 0, to_number(null), change.acc_emails_week_plus),
5431 decode(change.emails_orr_count_in_period,0,to_number(null),change.emails_orr_count_in_period),
5433 decode(change.EMAILS_AUTO_DELETED_IN_PERIOD,0,to_number(null),change.EMAILS_AUTO_DELETED_IN_PERIOD),
5434 decode(change.EMAILS_AUTO_RESOLVED_IN_PERIOD,0,to_number(null),change.EMAILS_AUTO_RESOLVED_IN_PERIOD),
5435 decode(change.emails_composed_in_period,0,to_number(null),change.emails_composed_in_period),
5436 decode(change.emails_rerouted_in_period,0,to_number(null),change.emails_rerouted_in_period),
5437 decode(change.leads_created_in_period,0,to_number(null),change.leads_created_in_period),
5438 g_request_id,
5439 g_program_appl_id,
5440 g_program_id,
5441 g_sysdate);
5442
5443 g_rows_ins_upd := g_rows_ins_upd + SQL%ROWCOUNT;
5444
5445 COMMIT;
5446
5447 write_log('Finished procedure summarize_data at : ' || to_char(sysdate, 'mm/dd/yyyy hh24:mi:ss'));
5448
5449 EXCEPTION
5450 WHEN OTHERS THEN
5451 write_log('Error in procedure summarize_data : Error : ' || sqlerrm);
5452 RAISE;
5453 END summarize_data;
5454
5455 ---------------------------------------------------------------------------
5456
5457 PROCEDURE move_stg_to_fact
5458 IS
5459
5460 BEGIN
5461
5462 MERGE INTO BIX_EMAIL_DETAILS_F summ
5463 USING
5464 (
5465 SELECT
5466 AGENT_ID,
5467 EMAIL_ACCOUNT_ID,
5468 EMAIL_CLASSIFICATION_ID,
5469 PARTY_ID,
5470 TIME_ID,
5471 PERIOD_TYPE_ID,
5472 PERIOD_START_DATE,
5473 PERIOD_START_TIME,
5474 CREATED_BY,
5475 CREATION_DATE,
5476 LAST_UPDATED_BY,
5477 LAST_UPDATE_DATE,
5478 LAST_UPDATE_LOGIN,
5479 nvl(EMAILS_OFFERED_IN_PERIOD,0) EMAILS_OFFERED_IN_PERIOD,
5480 nvl(EMAILS_FETCHED_IN_PERIOD,0) EMAILS_FETCHED_IN_PERIOD,
5481 nvl(EMAILS_REPLIED_IN_PERIOD,0) EMAILS_REPLIED_IN_PERIOD,
5482 nvl(EMAILS_RPLD_BY_GOAL_IN_PERIOD,0) EMAILS_RPLD_BY_GOAL_IN_PERIOD,
5483 nvl(AGENT_EMAILS_RPLD_BY_GOAL,0) AGENT_EMAILS_RPLD_BY_GOAL,
5484 nvl(EMAILS_DELETED_IN_PERIOD,0) EMAILS_DELETED_IN_PERIOD,
5485 nvl(EMAILS_TRNSFRD_OUT_IN_PERIOD,0) EMAILS_TRNSFRD_OUT_IN_PERIOD,
5486 nvl(EMAILS_TRNSFRD_IN_IN_PERIOD,0) EMAILS_TRNSFRD_IN_IN_PERIOD,
5487 nvl(EMAILS_RSL_AND_TRFD_IN_PERIOD,0) EMAILS_RSL_AND_TRFD_IN_PERIOD,
5488 nvl(EMAILS_ASSIGNED_IN_PERIOD,0) EMAILS_ASSIGNED_IN_PERIOD,
5489 nvl(EMAILS_AUTO_ROUTED_IN_PERIOD,0) EMAILS_AUTO_ROUTED_IN_PERIOD,
5490 nvl(EMAILS_AUTO_UPTD_SR_IN_PERIOD,0) EMAILS_AUTO_UPTD_SR_IN_PERIOD,
5491 nvl(SR_CREATED_IN_PERIOD,0) SR_CREATED_IN_PERIOD,
5492 nvl(ACCUMULATED_OPEN_EMAILS,0) ACCUMULATED_OPEN_EMAILS,
5493 NULL ACCUMULATED_OPEN_AGE,
5494 to_date(NULL) OLDEST_EMAIL_OPEN_DATE,
5495 nvl(ACCUMULATED_EMAILS_IN_QUEUE,0) ACCUMULATED_EMAILS_IN_QUEUE,
5496 NULL ACCUMULATED_QUEUE_TIME,
5497 to_date(NULL) OLDEST_EMAIL_QUEUE_DATE,
5498 nvl(EMAIL_RESP_TIME_IN_PERIOD,0) EMAIL_RESP_TIME_IN_PERIOD,
5499 nvl(AGENT_RESP_TIME_IN_PERIOD,0) AGENT_RESP_TIME_IN_PERIOD,
5500 nvl(ACCUMULATED_EMAILS_ONE_DAY,0) ACCUMULATED_EMAILS_ONE_DAY,
5501 nvl(ACCUMULATED_EMAILS_THREE_DAYS,0) ACCUMULATED_EMAILS_THREE_DAYS,
5502 nvl(ACCUMULATED_EMAILS_WEEK,0) ACCUMULATED_EMAILS_WEEK,
5503 nvl(ACCUMULATED_EMAILS_WEEK_PLUS,0) ACCUMULATED_EMAILS_WEEK_PLUS,
5504 nvl(ONE_RSLN_IN_PERIOD,0) ONE_RSLN_IN_PERIOD,
5505 nvl(TWO_RSLN_IN_PERIOD,0) TWO_RSLN_IN_PERIOD,
5506 nvl(THREE_RSLN_IN_PERIOD,0) THREE_RSLN_IN_PERIOD,
5507 nvl(FOUR_RSLN_IN_PERIOD,0) FOUR_RSLN_IN_PERIOD,
5508 nvl(INTERACTION_THREADS_IN_PERIOD,0) INTERACTION_THREADS_IN_PERIOD,
5509 OUTCOME_ID,
5510 RESULT_ID,
5511 REASON_ID,
5512 nvl(EMAILS_AUTO_REPLIED_IN_PERIOD,0) EMAILS_AUTO_REPLIED_IN_PERIOD,
5513 nvl(EMAILS_AUTO_DELETED_IN_PERIOD,0) EMAILS_AUTO_DELETED_IN_PERIOD,
5514 nvl(EMAILS_AUTO_RESOLVED_IN_PERIOD,0) EMAILS_AUTO_RESOLVED_IN_PERIOD,
5515 nvl(EMAILS_ORR_COUNT_IN_PERIOD,0) EMAILS_ORR_COUNT_IN_PERIOD,
5516 nvl(EMAILS_COMPOSED_IN_PERIOD,0) EMAILS_COMPOSED_IN_PERIOD,
5517 nvl(LEADS_CREATED_IN_PERIOD,0) LEADS_CREATED_IN_PERIOD,
5518 nvl(EMAILS_REROUTED_IN_PERIOD,0) EMAILS_REROUTED_IN_PERIOD
5519 FROM BIX_EMAIL_DETAILS_STG
5520 ) STG
5521 ON
5522 (
5523 summ.AGENT_ID = stg.AGENT_ID
5524 AND summ.EMAIL_ACCOUNT_ID = stg.EMAIL_ACCOUNT_ID
5525 AND summ.EMAIL_CLASSIFICATION_ID = stg.EMAIL_CLASSIFICATION_ID
5526 AND summ.PARTY_ID = stg.PARTY_ID
5527 AND summ.TIME_ID = stg.TIME_ID
5528 AND summ.PERIOD_TYPE_ID = stg.PERIOD_TYPE_ID
5529 AND summ.PERIOD_START_DATE = stg.PERIOD_START_DATE
5530 AND summ.PERIOD_START_TIME = stg.PERIOD_START_TIME
5531 AND summ.OUTCOME_ID = stg.OUTCOME_ID
5532 AND summ.RESULT_ID = stg.RESULT_ID
5533 AND summ.REASON_ID = stg.REASON_ID
5534 )
5535 WHEN MATCHED
5536 THEN
5537 UPDATE
5538 SET
5539 EMAILS_OFFERED_IN_PERIOD =
5540 decode (
5541 nvl(summ.EMAILS_OFFERED_IN_PERIOD,0) + stg.EMAILS_OFFERED_IN_PERIOD,0,NULL,
5542 nvl(summ.EMAILS_OFFERED_IN_PERIOD,0) + stg.EMAILS_OFFERED_IN_PERIOD
5543 ),
5544 EMAILS_FETCHED_IN_PERIOD =
5545 decode (
5546 nvl(summ.EMAILS_FETCHED_IN_PERIOD,0) + stg.EMAILS_FETCHED_IN_PERIOD ,0,NULL,
5547 nvl(summ.EMAILS_FETCHED_IN_PERIOD,0) + stg.EMAILS_FETCHED_IN_PERIOD
5548 ),
5549 EMAILS_REPLIED_IN_PERIOD =
5550 decode (
5551 nvl(summ.EMAILS_REPLIED_IN_PERIOD,0) + stg.EMAILS_REPLIED_IN_PERIOD ,0,NULL,
5552 nvl(summ.EMAILS_REPLIED_IN_PERIOD,0) + stg.EMAILS_REPLIED_IN_PERIOD
5553 ),
5554 EMAILS_RPLD_BY_GOAL_IN_PERIOD =
5555 decode (
5556 nvl(summ.EMAILS_RPLD_BY_GOAL_IN_PERIOD,0) + stg.EMAILS_RPLD_BY_GOAL_IN_PERIOD ,0,NULL,
5557 nvl(summ.EMAILS_RPLD_BY_GOAL_IN_PERIOD,0) + stg.EMAILS_RPLD_BY_GOAL_IN_PERIOD
5558 ),
5559 AGENT_EMAILS_RPLD_BY_GOAL =
5560 decode (
5564 EMAILS_DELETED_IN_PERIOD =
5561 nvl(summ.AGENT_EMAILS_RPLD_BY_GOAL,0) + stg.AGENT_EMAILS_RPLD_BY_GOAL ,0,NULL,
5562 nvl(summ.AGENT_EMAILS_RPLD_BY_GOAL,0) + stg.AGENT_EMAILS_RPLD_BY_GOAL
5563 ),
5565 decode (
5566 nvl(summ.EMAILS_DELETED_IN_PERIOD,0) + stg.EMAILS_DELETED_IN_PERIOD ,0,NULL,
5567 nvl(summ.EMAILS_DELETED_IN_PERIOD,0) + stg.EMAILS_DELETED_IN_PERIOD
5568 ),
5569 EMAILS_TRNSFRD_OUT_IN_PERIOD =
5570 decode (
5571 nvl(summ.EMAILS_TRNSFRD_OUT_IN_PERIOD,0) + stg.EMAILS_TRNSFRD_OUT_IN_PERIOD ,0,NULL,
5572 nvl(summ.EMAILS_TRNSFRD_OUT_IN_PERIOD,0) + stg.EMAILS_TRNSFRD_OUT_IN_PERIOD
5573 ),
5574 EMAILS_TRNSFRD_IN_IN_PERIOD =
5575 decode (
5576 nvl(summ.EMAILS_TRNSFRD_IN_IN_PERIOD,0) + stg.EMAILS_TRNSFRD_IN_IN_PERIOD ,0,NULL,
5577 nvl(summ.EMAILS_TRNSFRD_IN_IN_PERIOD,0) + stg.EMAILS_TRNSFRD_IN_IN_PERIOD
5578 ),
5579 EMAILS_RSL_AND_TRFD_IN_PERIOD =
5580 decode (
5581 nvl(summ.EMAILS_RSL_AND_TRFD_IN_PERIOD,0) + stg.EMAILS_RSL_AND_TRFD_IN_PERIOD ,0,NULL,
5582 nvl(summ.EMAILS_RSL_AND_TRFD_IN_PERIOD,0) + stg.EMAILS_RSL_AND_TRFD_IN_PERIOD
5583 ),
5584 EMAILS_ASSIGNED_IN_PERIOD =
5585 decode (
5586 nvl(summ.EMAILS_ASSIGNED_IN_PERIOD,0) + stg.EMAILS_ASSIGNED_IN_PERIOD ,0,NULL,
5587 nvl(summ.EMAILS_ASSIGNED_IN_PERIOD,0) + stg.EMAILS_ASSIGNED_IN_PERIOD
5588 ),
5589 EMAILS_AUTO_ROUTED_IN_PERIOD =
5590 decode (
5591 nvl(summ.EMAILS_AUTO_ROUTED_IN_PERIOD,0) + stg.EMAILS_AUTO_ROUTED_IN_PERIOD ,0,NULL,
5592 nvl(summ.EMAILS_AUTO_ROUTED_IN_PERIOD,0) + stg.EMAILS_AUTO_ROUTED_IN_PERIOD
5593 ),
5594 EMAILS_AUTO_UPTD_SR_IN_PERIOD =
5595 decode (
5596 nvl(summ.EMAILS_AUTO_UPTD_SR_IN_PERIOD,0) + stg.EMAILS_AUTO_UPTD_SR_IN_PERIOD ,0,NULL,
5597 nvl(summ.EMAILS_AUTO_UPTD_SR_IN_PERIOD,0) + stg.EMAILS_AUTO_UPTD_SR_IN_PERIOD
5598 ),
5599 SR_CREATED_IN_PERIOD =
5600 decode (
5601 nvl(summ.SR_CREATED_IN_PERIOD,0) + stg.SR_CREATED_IN_PERIOD ,0,NULL,
5602 nvl(summ.SR_CREATED_IN_PERIOD,0) + stg.SR_CREATED_IN_PERIOD
5603 ),
5604 ACCUMULATED_OPEN_EMAILS = stg.ACCUMULATED_OPEN_EMAILS,
5605 ACCUMULATED_EMAILS_IN_QUEUE = stg.ACCUMULATED_EMAILS_IN_QUEUE,
5606 EMAIL_RESP_TIME_IN_PERIOD =
5607 decode (
5608 nvl(summ.EMAIL_RESP_TIME_IN_PERIOD,0) + stg.EMAIL_RESP_TIME_IN_PERIOD ,0,NULL,
5609 nvl(summ.EMAIL_RESP_TIME_IN_PERIOD,0) + stg.EMAIL_RESP_TIME_IN_PERIOD
5610 ),
5611 AGENT_RESP_TIME_IN_PERIOD =
5612 decode (
5613 nvl(summ.AGENT_RESP_TIME_IN_PERIOD,0) + stg.AGENT_RESP_TIME_IN_PERIOD ,0,NULL,
5614 nvl(summ.AGENT_RESP_TIME_IN_PERIOD,0) + stg.AGENT_RESP_TIME_IN_PERIOD
5615 ),
5616 ACCUMULATED_EMAILS_ONE_DAY = decode(stg.ACCUMULATED_EMAILS_ONE_DAY,0,to_number(null),stg.ACCUMULATED_EMAILS_ONE_DAY),
5617 ACCUMULATED_EMAILS_THREE_DAYS = decode(stg.ACCUMULATED_EMAILS_THREE_DAYS,0,to_number(null),stg.ACCUMULATED_EMAILS_THREE_DAYS),
5618 ACCUMULATED_EMAILS_WEEK = decode(stg.ACCUMULATED_EMAILS_WEEK,0,to_number(null),stg.ACCUMULATED_EMAILS_WEEK),
5619 ACCUMULATED_EMAILS_WEEK_PLUS = decode(stg.ACCUMULATED_EMAILS_WEEK_PLUS,0,to_number(null),stg.ACCUMULATED_EMAILS_WEEK_PLUS),
5620 ONE_RSLN_IN_PERIOD =
5621 decode (
5622 nvl(summ.ONE_RSLN_IN_PERIOD,0) + stg.ONE_RSLN_IN_PERIOD ,0,NULL,
5623 nvl(summ.ONE_RSLN_IN_PERIOD,0) + stg.ONE_RSLN_IN_PERIOD
5624 ),
5625 TWO_RSLN_IN_PERIOD =
5626 decode (
5627 nvl(summ.TWO_RSLN_IN_PERIOD,0) + stg.TWO_RSLN_IN_PERIOD ,0,NULL,
5628 nvl(summ.TWO_RSLN_IN_PERIOD,0) + stg.TWO_RSLN_IN_PERIOD
5629 ),
5630 THREE_RSLN_IN_PERIOD =
5631 decode (
5632 nvl(summ.THREE_RSLN_IN_PERIOD,0) + stg.THREE_RSLN_IN_PERIOD ,0,NULL,
5633 nvl(summ.THREE_RSLN_IN_PERIOD,0) + stg.THREE_RSLN_IN_PERIOD
5634 ),
5635 FOUR_RSLN_IN_PERIOD =
5636 decode (
5637 nvl(summ.FOUR_RSLN_IN_PERIOD,0) + stg.FOUR_RSLN_IN_PERIOD ,0,NULL,
5638 nvl(summ.FOUR_RSLN_IN_PERIOD,0) + stg.FOUR_RSLN_IN_PERIOD
5639 ),
5640 INTERACTION_THREADS_IN_PERIOD =
5641 decode (
5642 nvl(summ.INTERACTION_THREADS_IN_PERIOD,0) + stg.INTERACTION_THREADS_IN_PERIOD ,0,NULL,
5643 nvl(summ.INTERACTION_THREADS_IN_PERIOD,0) + stg.INTERACTION_THREADS_IN_PERIOD
5644 ),
5645 EMAILS_AUTO_REPLIED_IN_PERIOD =
5646 decode (
5647 nvl(summ.EMAILS_AUTO_REPLIED_IN_PERIOD,0) + stg.EMAILS_AUTO_REPLIED_IN_PERIOD ,0,NULL,
5648 nvl(summ.EMAILS_AUTO_REPLIED_IN_PERIOD,0) + stg.EMAILS_AUTO_REPLIED_IN_PERIOD
5649 ),
5650 EMAILS_AUTO_DELETED_IN_PERIOD =
5651 decode (
5652 nvl(summ.EMAILS_AUTO_DELETED_IN_PERIOD,0) + stg.EMAILS_AUTO_DELETED_IN_PERIOD ,0,NULL,
5653 nvl(summ.EMAILS_AUTO_DELETED_IN_PERIOD,0) + stg.EMAILS_AUTO_DELETED_IN_PERIOD
5654 ),
5655 EMAILS_AUTO_RESOLVED_IN_PERIOD =
5656 decode (
5657 nvl(summ.EMAILS_AUTO_RESOLVED_IN_PERIOD,0) + stg.EMAILS_AUTO_RESOLVED_IN_PERIOD ,0,NULL,
5658 nvl(summ.EMAILS_AUTO_RESOLVED_IN_PERIOD,0) + stg.EMAILS_AUTO_RESOLVED_IN_PERIOD
5659 ),
5660 EMAILS_ORR_COUNT_IN_PERIOD =
5661 decode (
5662 nvl(summ.EMAILS_ORR_COUNT_IN_PERIOD,0) + stg.EMAILS_ORR_COUNT_IN_PERIOD ,0,NULL,
5663 nvl(summ.EMAILS_ORR_COUNT_IN_PERIOD,0) + stg.EMAILS_ORR_COUNT_IN_PERIOD
5664 ),
5665 EMAILS_COMPOSED_IN_PERIOD =
5666 decode (
5667 nvl(summ.EMAILS_COMPOSED_IN_PERIOD,0) + stg.EMAILS_COMPOSED_IN_PERIOD ,0,NULL,
5668 nvl(summ.EMAILS_COMPOSED_IN_PERIOD,0) + stg.EMAILS_COMPOSED_IN_PERIOD
5669 ),
5670 LEADS_CREATED_IN_PERIOD =
5671 decode (
5672 nvl(summ.LEADS_CREATED_IN_PERIOD,0) + stg.LEADS_CREATED_IN_PERIOD ,0,NULL,
5673 nvl(summ.LEADS_CREATED_IN_PERIOD,0) + stg.LEADS_CREATED_IN_PERIOD
5674 ),
5675 EMAILS_REROUTED_IN_PERIOD =
5676 decode (
5677 nvl(summ.EMAILS_REROUTED_IN_PERIOD,0) + stg.EMAILS_REROUTED_IN_PERIOD ,0,NULL,
5681 THEN
5678 nvl(summ.EMAILS_REROUTED_IN_PERIOD,0) + stg.EMAILS_REROUTED_IN_PERIOD
5679 )
5680 WHEN NOT MATCHED
5682 INSERT
5683 (
5684 summ.AGENT_ID,
5685 summ.EMAIL_ACCOUNT_ID,
5686 summ.EMAIL_CLASSIFICATION_ID,
5687 summ.PARTY_ID,
5688 summ.TIME_ID,
5689 summ.PERIOD_TYPE_ID,
5690 summ.PERIOD_START_DATE,
5691 summ.PERIOD_START_TIME,
5692 summ.CREATED_BY,
5693 summ.CREATION_DATE,
5694 summ.LAST_UPDATED_BY,
5695 summ.LAST_UPDATE_DATE,
5696 summ.LAST_UPDATE_LOGIN,
5697 summ.EMAILS_OFFERED_IN_PERIOD,
5698 summ.EMAILS_FETCHED_IN_PERIOD,
5699 summ.EMAILS_REPLIED_IN_PERIOD,
5700 summ.EMAILS_RPLD_BY_GOAL_IN_PERIOD,
5701 summ.AGENT_EMAILS_RPLD_BY_GOAL,
5702 summ.EMAILS_DELETED_IN_PERIOD,
5703 summ.EMAILS_TRNSFRD_OUT_IN_PERIOD,
5704 summ.EMAILS_TRNSFRD_IN_IN_PERIOD,
5705 summ.EMAILS_RSL_AND_TRFD_IN_PERIOD,
5706 summ.EMAILS_ASSIGNED_IN_PERIOD,
5707 summ.EMAILS_AUTO_ROUTED_IN_PERIOD,
5708 summ.EMAILS_AUTO_UPTD_SR_IN_PERIOD,
5709 summ.SR_CREATED_IN_PERIOD,
5710 summ.ACCUMULATED_OPEN_EMAILS,
5711 summ.ACCUMULATED_OPEN_AGE,
5712 summ.OLDEST_EMAIL_OPEN_DATE,
5713 summ.ACCUMULATED_EMAILS_IN_QUEUE,
5714 summ.ACCUMULATED_QUEUE_TIME,
5715 summ.OLDEST_EMAIL_QUEUE_DATE,
5716 summ.EMAIL_RESP_TIME_IN_PERIOD,
5717 summ.AGENT_RESP_TIME_IN_PERIOD,
5718 summ.ACCUMULATED_EMAILS_ONE_DAY,
5719 summ.ACCUMULATED_EMAILS_THREE_DAYS,
5720 summ.ACCUMULATED_EMAILS_WEEK,
5721 summ.ACCUMULATED_EMAILS_WEEK_PLUS,
5722 summ.ONE_RSLN_IN_PERIOD,
5723 summ.TWO_RSLN_IN_PERIOD,
5724 summ.THREE_RSLN_IN_PERIOD,
5725 summ.FOUR_RSLN_IN_PERIOD,
5726 summ.INTERACTION_THREADS_IN_PERIOD,
5727 summ.OUTCOME_ID,
5728 summ.RESULT_ID,
5729 summ.REASON_ID,
5730 summ.EMAILS_AUTO_REPLIED_IN_PERIOD,
5731 summ.EMAILS_AUTO_DELETED_IN_PERIOD,
5732 summ.EMAILS_AUTO_RESOLVED_IN_PERIOD,
5733 summ.EMAILS_ORR_COUNT_IN_PERIOD,
5734 summ.EMAILS_COMPOSED_IN_PERIOD,
5735 summ.LEADS_CREATED_IN_PERIOD,
5736 summ.EMAILS_REROUTED_IN_PERIOD
5737 )
5738 values
5739 (
5740 stg.AGENT_ID,
5741 stg.EMAIL_ACCOUNT_ID,
5742 stg.EMAIL_CLASSIFICATION_ID,
5743 stg.PARTY_ID,
5744 stg.TIME_ID,
5745 stg.PERIOD_TYPE_ID,
5746 stg.PERIOD_START_DATE,
5747 stg.PERIOD_START_TIME,
5748 stg.CREATED_BY,
5749 stg.CREATION_DATE,
5750 stg.LAST_UPDATED_BY,
5751 stg.LAST_UPDATE_DATE,
5752 stg.LAST_UPDATE_LOGIN,
5753 decode(stg.EMAILS_OFFERED_IN_PERIOD, 0,to_number(null),stg.EMAILS_OFFERED_IN_PERIOD),
5754 decode(stg.EMAILS_FETCHED_IN_PERIOD, 0,to_number(null),stg.EMAILS_FETCHED_IN_PERIOD),
5755 decode(stg.EMAILS_REPLIED_IN_PERIOD, 0,to_number(null),stg.EMAILS_REPLIED_IN_PERIOD),
5756 decode(stg.EMAILS_RPLD_BY_GOAL_IN_PERIOD, 0,to_number(null),stg.EMAILS_RPLD_BY_GOAL_IN_PERIOD),
5757 decode(stg.AGENT_EMAILS_RPLD_BY_GOAL, 0,to_number(null),stg.AGENT_EMAILS_RPLD_BY_GOAL),
5758 decode(stg.EMAILS_DELETED_IN_PERIOD, 0,to_number(null),stg.EMAILS_DELETED_IN_PERIOD),
5759 decode(stg.EMAILS_TRNSFRD_OUT_IN_PERIOD, 0,to_number(null),stg.EMAILS_TRNSFRD_OUT_IN_PERIOD),
5760 decode(stg.EMAILS_TRNSFRD_IN_IN_PERIOD, 0,to_number(null),stg.EMAILS_TRNSFRD_IN_IN_PERIOD),
5761 decode(stg.EMAILS_RSL_AND_TRFD_IN_PERIOD, 0,to_number(null),stg.EMAILS_RSL_AND_TRFD_IN_PERIOD),
5762 decode(stg.EMAILS_ASSIGNED_IN_PERIOD, 0,to_number(null),stg.EMAILS_ASSIGNED_IN_PERIOD),
5763 decode(stg.EMAILS_AUTO_ROUTED_IN_PERIOD, 0,to_number(null),stg.EMAILS_AUTO_ROUTED_IN_PERIOD),
5764 decode(stg.EMAILS_AUTO_UPTD_SR_IN_PERIOD, 0,to_number(null),stg.EMAILS_AUTO_UPTD_SR_IN_PERIOD),
5765 decode(stg.SR_CREATED_IN_PERIOD, 0,to_number(null),stg.SR_CREATED_IN_PERIOD),
5766 decode(stg.ACCUMULATED_OPEN_EMAILS, 0,to_number(null),stg.ACCUMULATED_OPEN_EMAILS),
5767 decode(stg.ACCUMULATED_OPEN_AGE, 0,to_number(null),stg.ACCUMULATED_OPEN_AGE),
5768 stg.OLDEST_EMAIL_OPEN_DATE,
5769 decode(stg.ACCUMULATED_EMAILS_IN_QUEUE, 0,to_number(null),stg.ACCUMULATED_EMAILS_IN_QUEUE),
5770 decode(stg.ACCUMULATED_QUEUE_TIME, 0,to_number(null),stg.ACCUMULATED_QUEUE_TIME),
5771 stg.OLDEST_EMAIL_QUEUE_DATE,
5772 decode(stg.EMAIL_RESP_TIME_IN_PERIOD, 0,to_number(null),stg.EMAIL_RESP_TIME_IN_PERIOD),
5773 decode(stg.AGENT_RESP_TIME_IN_PERIOD, 0,to_number(null),stg.AGENT_RESP_TIME_IN_PERIOD),
5774 decode(stg.ACCUMULATED_EMAILS_ONE_DAY, 0,to_number(null),stg.ACCUMULATED_EMAILS_ONE_DAY),
5775 decode(stg.ACCUMULATED_EMAILS_THREE_DAYS, 0,to_number(null),stg.ACCUMULATED_EMAILS_THREE_DAYS),
5776 decode(stg.ACCUMULATED_EMAILS_WEEK, 0,to_number(null),stg.ACCUMULATED_EMAILS_WEEK),
5777 decode(stg.ACCUMULATED_EMAILS_WEEK_PLUS, 0,to_number(null),stg.ACCUMULATED_EMAILS_WEEK_PLUS),
5778 decode(stg.ONE_RSLN_IN_PERIOD, 0,to_number(null),stg.ONE_RSLN_IN_PERIOD),
5779 decode(stg.TWO_RSLN_IN_PERIOD, 0,to_number(null),stg.TWO_RSLN_IN_PERIOD),
5780 decode(stg.THREE_RSLN_IN_PERIOD, 0,to_number(null),stg.THREE_RSLN_IN_PERIOD),
5781 decode(stg.FOUR_RSLN_IN_PERIOD, 0,to_number(null),stg.FOUR_RSLN_IN_PERIOD),
5782 decode(stg.INTERACTION_THREADS_IN_PERIOD, 0,to_number(null),stg.INTERACTION_THREADS_IN_PERIOD),
5783 stg.OUTCOME_ID,
5784 stg.RESULT_ID,
5785 stg.REASON_ID,
5786 decode(stg.EMAILS_AUTO_REPLIED_IN_PERIOD, 0,to_number(null),stg.EMAILS_AUTO_REPLIED_IN_PERIOD),
5787 decode(stg.EMAILS_AUTO_DELETED_IN_PERIOD, 0,to_number(null),stg.EMAILS_AUTO_DELETED_IN_PERIOD),
5788 decode(stg.EMAILS_AUTO_RESOLVED_IN_PERIOD, 0,to_number(null),stg.EMAILS_AUTO_RESOLVED_IN_PERIOD),
5789 decode(stg.EMAILS_ORR_COUNT_IN_PERIOD, 0,to_number(null),stg.EMAILS_ORR_COUNT_IN_PERIOD),
5790 decode(stg.EMAILS_COMPOSED_IN_PERIOD, 0,to_number(null),stg.EMAILS_COMPOSED_IN_PERIOD),
5791 decode(stg.LEADS_CREATED_IN_PERIOD, 0,to_number(null),stg.LEADS_CREATED_IN_PERIOD),
5792 decode(stg.EMAILS_REROUTED_IN_PERIOD, 0,to_number(null),stg.EMAILS_REROUTED_IN_PERIOD)
5793 );
5794
5795 g_rows_ins_upd := g_rows_ins_upd + SQL%ROWCOUNT;
5796 --IF (g_debug_flag = 'Y') THEN
5797 --write_log('Total rows moved into BIX_EMAIL_DETAILS_F : ' ||
5798 --g_rows_ins_upd);
5799 --END IF;
5800
5801 COMMIT;
5802
5806 WHEN OTHERS THEN
5803 --write_log(to_char(sysdate, 'mm/dd/yyyy hh24:mi:ss: ')||
5804
5805 EXCEPTION
5807 write_log('Error in procedure move_stg_to_fact : Error : ' || sqlerrm);
5808 RAISE;
5809
5810 END move_stg_to_fact;
5811
5812 ---------------------------------------------------------------------------
5813
5814
5815 /* This is the starting procedure called from worker Concurrent program */
5816
5817
5818 PROCEDURE worker(errbuf OUT NOCOPY VARCHAR2,
5819 retcode OUT NOCOPY VARCHAR2,
5820 p_worker_no IN NUMBER) IS
5821
5822 l_unassigned_cnt NUMBER := 0;
5823 l_failed_cnt NUMBER := 0;
5824 l_wip_cnt NUMBER := 0;
5825 l_completed_cnt NUMBER := 0;
5826 l_total_cnt NUMBER := 0;
5827 l_count NUMBER :=0;
5828 l_start_date_range DATE;
5829 l_end_date_range DATE;
5830
5831 BEGIN
5832
5833 write_log('Start of the procedure worker at : ' || to_char(sysdate, 'mm/dd/yyyy hh24:mi:ss'));
5834
5835 errbuf := NULL;
5836 retcode := 0;
5837
5838 write_log('Calling procedure init');
5839 init;
5840 write_log('End procedure init');
5841
5842 l_count:= 0;
5843
5844 LOOP
5845
5846 /* Get the status of all the jobs in BIX_WORKER_JOBS */
5847 SELECT NVL(sum(decode(status,'UNASSIGNED', 1, 0)),0),
5848 NVL(sum(decode(status,'FAILED', 1, 0)),0),
5849 NVL(sum(decode(status,'IN PROCESS', 1, 0)),0),
5850 NVL(sum(decode(status,'COMPLETED',1 , 0)),0),
5851 count(*)
5852 INTO l_unassigned_cnt,
5853 l_failed_cnt,
5854 l_wip_cnt,
5855 l_completed_cnt,
5856 l_total_cnt
5857 FROM BIX_WORKER_JOBS
5858 WHERE object_name = 'BIX_EMAIL_DETAILS_F';
5859
5860 write_log('Job status - Unassigned: '||l_unassigned_cnt||
5861 ' In Process: '||l_wip_cnt||
5862 ' Completed: '||l_completed_cnt||
5863 ' Failed: '||l_failed_cnt||
5864 ' Total: '|| l_total_cnt);
5865
5866 IF (l_failed_cnt > 0) THEN
5867 write_log('Another worker have errored out. Stop processing.');
5868 EXIT;
5869 ELSIF (l_unassigned_cnt = 0) THEN
5870 write_log('No more jobs left. Terminating.');
5871 EXIT;
5872 ELSIF (l_completed_cnt = l_total_cnt) THEN
5873 write_log('All jobs completed, no more job. Terminating');
5874 EXIT;
5875 ELSIF (l_unassigned_cnt > 0) THEN
5876 /* Pickup any one unassigned job to process */
5877 write_log('Picking up an unassigned job');
5878 UPDATE BIX_WORKER_JOBS
5879 SET status = 'IN PROCESS',
5880 worker_number = p_worker_no
5881 WHERE status = 'UNASSIGNED'
5882 AND rownum < 2
5883 AND object_name = 'BIX_EMAIL_DETAILS_F';
5884
5885 l_count := sql%rowcount;
5886 COMMIT;
5887 END IF;
5888
5889 -- -----------------------------------
5890 -- There could be rare situations where
5891 -- between Section 30 and Section 50
5892 -- the unassigned job gets taken by
5893 -- another worker. So, if unassigned
5894 -- job no longer exist. Do nothing.
5895 -- -----------------------------------
5896
5897 IF (l_count > 0) THEN
5898
5899 DECLARE
5900 BEGIN
5901
5902 /* Collect data for half hour time buckets for the date range of the job */
5903 SELECT start_date_range, end_date_range
5904 INTO l_start_date_range, l_end_date_range
5905 FROM BIX_WORKER_JOBS
5906 WHERE worker_number = p_worker_no
5907 AND status = 'IN PROCESS'
5908 AND object_name = 'BIX_EMAIL_DETAILS_F';
5909
5910 g_collect_start_date := l_start_date_range;
5911 g_collect_end_date := l_end_date_range;
5912
5913
5914 write_log('Calling procedure collect_emails from worker');
5915 collect_emails;
5916 write_log('End procedure collect_emails');
5917
5918 /* Update the status of job to 'COMPLETED' */
5919 UPDATE BIX_WORKER_JOBS
5920 SET status = 'COMPLETED'
5921 WHERE status = 'IN PROCESS'
5922 AND worker_number = p_worker_no
5923 AND object_name = 'BIX_EMAIL_DETAILS_F';
5924
5925 COMMIT;
5926
5927 EXCEPTION
5928 WHEN OTHERS THEN
5929 retcode := -1;
5930
5931 UPDATE BIX_WORKER_JOBS
5932 SET status = 'FAILED'
5933 WHERE worker_number = p_worker_no
5934 AND status = 'IN PROCESS'
5935 AND object_name = 'BIX_EMAIL_DETAILS_F';
5936
5937 COMMIT;
5938 write_log('Error in worker');
5939 RAISE G_CHILD_PROCESS_ISSUE;
5940 END;
5941
5942 END IF; /* IF (l_count> 0) */
5943
5944 END LOOP;
5945
5946 write_log('Finished procedure worker at : ' || to_char(sysdate, 'mm/dd/yyyy hh24:mi:ss'));
5947 EXCEPTION
5948 WHEN OTHERS THEN
5949 write_log('Error in procedure worker : Error : ' || sqlerrm);
5950 RAISE;
5951 END WORKER;
5952
5953 /*
5954
5955 This procedure make use of worker archetecture to collect the measures parallely for different days.
5956 each worker loads data 1 day at a time.
5957 if the collection date range is more than 1 day and user has specified to launch more than 1 worker ,
5958 then launch parallel workers to do the collection of each day
5959
5960 Once the data is collected at day level, it summarizes the data by calling summarize_data procedure.
5961
5965 depending on its current status in all rows including all type of rows ( week, month, quarter and Year).
5962 Resolution collection is done at the end after summarizing the data.
5963 This is because if there was an interaction one and done some time back now
5964 it is no longer one and done. It needs to be subtracted from one and done and add to two or three or four done
5966
5967 */
5968
5969
5970 PROCEDURE MAIN ( errbuf OUT NOCOPY VARCHAR2,
5971 retcode OUT NOCOPY VARCHAR2,
5972 p_start_date IN VARCHAR2,
5973 p_end_date IN VARCHAR2,
5974 p_number_of_processes IN NUMBER) IS
5975
5976 l_has_missing_date BOOLEAN := FALSE;
5977 l_no_of_workers NUMBER;
5978
5979 BEGIN
5980 errbuf := null;
5981 retcode := 0;
5982
5983 write_log('Collection start date as specified by the user : ' || p_start_date);
5984 write_log('Collection end date as specified by the user : ' || p_end_date);
5985
5986 /* get the collection date range */
5987 g_collect_start_date := TO_DATE(p_start_date, 'YYYY/MM/DD HH24:MI:SS');
5988 g_collect_end_date := TO_DATE(p_end_date, 'YYYY/MM/DD HH24:MI:SS');
5989
5990
5991
5992
5993
5994
5995
5996 /* Check if the time dimension is populated for the collection date range ; if not exit */
5997 fii_time_api.check_missing_date(g_collect_start_date, g_collect_end_date, l_has_missing_date);
5998 IF (l_has_missing_date) THEN
5999 write_log('Time dimension is not populated for the entire collection date range');
6000 RAISE G_TIME_DIM_MISSING;
6001 END IF;
6002
6003 /* if the collection date range is more than 1 day and user has specified to launch more than 1 worker , */
6004 /* then launch parallel workers to do the half hour collection of each day */
6005 IF (((g_collect_end_date - g_collect_start_date) > 1) AND
6006 (p_number_of_processes > 1)) THEN
6007 write_log('Calling procedure register_jobs');
6008 register_jobs;
6009 write_log('End procedure register_jobs');
6010
6011 l_no_of_workers := least(g_no_of_jobs, p_number_of_processes);
6012
6013 write_log('Launching Workers');
6014 /* Launch a parallel worker for each day of the collection date range or number of processes */
6015 /* user has requested for , whichever is less */
6016 FOR i IN 1 .. l_no_of_workers
6017 LOOP
6018 g_worker(i) := LAUNCH_WORKER(i);
6019 END LOOP;
6020 write_log('Number of Workers launched : ' || to_char(l_no_of_workers));
6021
6022 COMMIT;
6023
6024 write_log('Monitoring child processess .....');
6025 /* Monitor child processes after launching them */
6026 DECLARE
6027
6028 l_unassigned_cnt NUMBER := 0;
6029 l_completed_cnt NUMBER := 0;
6030 l_wip_cnt NUMBER := 0;
6031 l_failed_cnt NUMBER := 0;
6032 l_tot_cnt NUMBER := 0;
6033 l_last_unassigned_cnt NUMBER := 0;
6034 l_last_completed_cnt NUMBER := 0;
6035 l_last_wip_cnt NUMBER := 0;
6036 l_cycle NUMBER := 0;
6037
6038 BEGIN
6039 LOOP
6040
6041 SELECT NVL(sum(decode(status,'UNASSIGNED',1,0)),0),
6042 NVL(sum(decode(status,'COMPLETED',1,0)),0),
6043 NVL(sum(decode(status,'IN PROCESS',1,0)),0),
6044 NVL(sum(decode(status,'FAILED',1,0)),0),
6045 count(*)
6046 INTO l_unassigned_cnt,
6047 l_completed_cnt,
6048 l_wip_cnt,
6049 l_failed_cnt,
6050 l_tot_cnt
6051 FROM BIX_WORKER_JOBS
6052 WHERE OBJECT_NAME = 'BIX_EMAIL_DETAILS_F';
6053
6054 IF (l_failed_cnt > 0) THEN
6055 RAISE G_CHILD_PROCESS_ISSUE;
6056 END IF;
6057
6058 IF (l_tot_cnt = l_completed_cnt) THEN
6059 EXIT;
6060 END IF;
6061
6062 IF (l_unassigned_cnt = l_last_unassigned_cnt AND
6063 l_completed_cnt = l_last_completed_cnt AND
6064 l_wip_cnt = l_last_wip_cnt) THEN
6065 l_cycle := l_cycle + 1;
6066 ELSE
6067 l_cycle := 1;
6068 END IF;
6069 /*
6070 IF (l_cycle > MAX_LOOP) THEN
6071 RAISE G_CHILD_PROCESS_ISSUE;
6072 END IF;
6073
6074 */
6075
6076 dbms_lock.sleep(60);
6077
6078 l_last_unassigned_cnt := l_unassigned_cnt;
6079 l_last_completed_cnt := l_completed_cnt;
6080 l_last_wip_cnt := l_wip_cnt;
6081
6082 END LOOP;
6083
6084 END; -- Monitor child process Ends here.
6085 write_log('Done monitoring child processes');
6086 ELSE
6087 /* if no child process , then collect the day's data for the entire date range */
6088 write_log('Calling procedure collect_emails');
6089 collect_emails;
6090 write_log('End procedure collect_emails');
6091 END IF;
6092
6093 /* Summarize data to day, week, month, quater and year time buckets */
6094 write_log('Calling procedure summarize_data');
6095 summarize_data;
6096
6097 --REMOVE COMMENTED ABOVE????????????????????????????
6098
6099 write_log('End procedure summarize_data');
6100
6101 write_log('Calling procedure move_stg_to_fact');
6102 move_stg_to_fact;
6103
6104 write_log('Total Rows Inserted/Updated : ' || to_char(g_rows_ins_upd));
6105
6106 /* Collect the resolutions measures */
6107 write_log('Calling procedure collect_resolutions');
6108 collect_resolutions;
6109 write_log('End procedure collect_resolutions');
6110
6111
6112
6113
6114
6115
6116 /* Insert the status into collect log table */
6120 p_count => g_rows_ins_upd,
6117 write_log('Calling procedure WRAPUP');
6118 bis_collection_utilities.wrapup(
6119 p_status => TRUE,
6121 p_message => NULL,
6122 p_period_from => g_collect_start_date,
6123 p_period_to => g_collect_end_date);
6124 write_log('End Proceddure WRAPUP');
6125
6126 write_log('Finished Procedure BIX_EMALS_SUMMARY_PKG with success at : ' || to_char(sysdate, 'mm/dd/yyyy hh24:mi:ss'));
6127
6128 EXCEPTION
6129 WHEN G_PARAM_MISMATCH THEN
6130 bis_collection_utilities.wrapup(
6131 p_status => FALSE,
6132 p_count => 0,
6133 p_message => '0 rows collected : wait for at least half hour between two executions of this program',
6134 p_period_from => g_collect_start_date,
6135 p_period_to => g_collect_end_date);
6136 WHEN G_TIME_DIM_MISSING THEN
6137 retcode := -1;
6138 errbuf := 'Time Dimension is not populated for the entire collection range';
6139 bis_collection_utilities.wrapup(
6140 p_status => FALSE,
6141 p_count => 0,
6142 p_message => 'eMail summary package failed : Error : Time dimension is not populated',
6143 p_period_from => g_collect_start_date,
6144 p_period_to => g_collect_end_date);
6145 WHEN G_CHILD_PROCESS_ISSUE THEN
6146 clean_up;
6147 retcode := SQLCODE;
6148 errbuf := SQLERRM;
6149 bis_collection_utilities.wrapup(
6150 p_status => FALSE,
6151 p_count => 0,
6152 p_message => 'eMail summary package failed : error : ' || sqlerrm,
6153 p_period_from => g_collect_start_date,
6154 p_period_to => g_collect_end_date);
6155 WHEN OTHERS THEN
6156 clean_up;
6157 retcode := SQLCODE;
6158 errbuf := SQLERRM;
6159 bis_collection_utilities.wrapup(
6160 p_status => FALSE,
6161 p_count => 0,
6162 p_message => 'eMail summary package failed : error : ' || sqlerrm,
6163 p_period_from => g_collect_start_date,
6164 p_period_to => g_collect_end_date);
6165 END MAIN;
6166
6167
6168 /*
6169
6170 This procedure is called from the Update Email Summary concurrent program.
6171 This procedure calls init to do some initialization and calls MAIN procedure with start and End Dates.
6172
6173 */
6174
6175
6176 PROCEDURE load (errbuf OUT NOCOPY VARCHAR2,
6177 retcode OUT NOCOPY VARCHAR2,
6178 p_number_of_processes IN NUMBER)
6179 IS
6180 l_last_start_date DATE;
6181 l_last_end_date DATE;
6182 l_last_period_from DATE;
6183 l_last_period_to DATE;
6184 l_end_date DATE;
6185 l_min_media_date DATE;
6186 BEGIN
6187
6188
6189
6190 init;
6191 write_log('End procedure init');
6192
6193
6194 SELECT
6195 MAX(Decode(milcs_code,'EMAIL_PROCESSING',milcs_type_id)) ,
6196 MAX(Decode(milcs_code,'EMAIL_REPLY',milcs_type_id)) ,
6197 MAX(Decode(milcs_code,'EMAIL_AUTO_REPLY',milcs_type_id)) ,
6198 MAX(Decode(milcs_code,'EMAIL_FETCH',milcs_type_id)) ,
6199 MAX(Decode(milcs_code,'EMAIL_OPEN',milcs_type_id)) ,
6200 MAX(Decode(milcs_code,'EMAIL_TRANSFER',milcs_type_id)) ,
6201 MAX(Decode(milcs_code,'EMAIL_TRANSFERRED',milcs_type_id)) ,
6202 MAX(Decode(milcs_code,'EMAIL_ASSIGN_OPEN',milcs_type_id)) ,
6203 MAX(Decode(milcs_code,'EMAIL_ASSIGNED',milcs_type_id)) ,
6204 MAX(Decode(milcs_code,'EMAIL_AUTO_ROUTED',milcs_type_id)) ,
6205 MAX(Decode(milcs_code,'EMAIL_AUTO_UPDATED_SR',milcs_type_id)) ,
6206 MAX(Decode(milcs_code,'EMAIL_ESCALATED',milcs_type_id)) ,
6207 MAX(Decode(milcs_code,'EMAIL_DELETED',milcs_type_id)) ,
6208 MAX(Decode(milcs_code,'EMAIL_AUTO_DELETED',milcs_type_id)) ,
6209 MAX(Decode(milcs_code,'EMAIL_AUTO_REDIRECTED',milcs_type_id)) ,
6210 MAX(Decode(milcs_code,'EMAIL_RESOLVED',milcs_type_id)) ,
6211 MAX(Decode(milcs_code,'EMAIL_REROUTED_DIFF_CLASS',milcs_type_id)) ,
6212 MAX(Decode(milcs_code,'EMAIL_REROUTED_DIFF_ACCT',milcs_type_id)) ,
6213 MAX(Decode(milcs_code,'EMAIL_REQUEUED',milcs_type_id)) ,
6214 MAX(Decode(milcs_code,'EMAIL_COMPOSE',milcs_type_id))
6215 INTO
6216 G_PROCESSING,
6217 G_REPLY,
6218 G_A_REPLY,
6219 G_FETCH,
6220 G_OPEN,
6221 G_TRANSFER,
6222 G_TRANSFERRED,
6223 G_ASSIGN_OPEN,
6224 G_ASSIGNED,
6225 G_A_ROUTED,
6226 G_A_UPDATED_SR,
6227 G_ESCALATED,
6228 G_DELETED,
6229 G_A_DELETED,
6230 G_A_REDIRECTED,
6231 G_RESOLVED,
6232 G_REROUTED_CLASS,
6233 G_REROUTED_ACCT,
6234 G_REQUEUED,
6235 G_COMPOSE
6236 FROM jtf_ih_media_itm_lc_seg_tys
6237 WHERE milcs_code IN
6238 (
6239 'EMAIL_PROCESSING'
6240 ,'EMAIL_REPLY','EMAIL_AUTO_REPLY'
6241 ,'EMAIL_FETCH'
6242 ,'EMAIL_OPEN'
6243 ,'EMAIL_TRANSFER','EMAIL_TRANSFERRED'
6244 ,'EMAIL_ASSIGN_OPEN','EMAIL_ASSIGNED'
6245 ,'EMAIL_AUTO_ROUTED', 'EMAIL_AUTO_UPDATED_SR'
6246 ,'EMAIL_ESCALATED'
6247 ,'EMAIL_DELETED','EMAIL_AUTO_DELETED' ,'EMAIL_AUTO_REDIRECTED'
6248 ,'EMAIL_RESOLVED'
6249 ,'EMAIL_REROUTED_DIFF_CLASS','EMAIL_REROUTED_DIFF_ACCT','EMAIL_REQUEUED'
6250 ,'EMAIL_COMPOSE'
6251 );
6252
6253
6254
6255
6256
6257 BIS_COLLECTION_UTILITIES.get_last_refresh_dates('BIX_EMAIL_DETAILS_F',
6258 l_last_start_date,
6259 l_last_end_date,
6260 l_last_period_from,
6261 l_last_period_to);
6262
6263
6264 IF l_last_period_to IS NULL THEN
6265 l_last_period_to := to_date(fnd_profile.value('BIS_GLOBAL_START_DATE'),'MM/DD/YYYY');
6266 END IF;
6267 l_last_period_to := l_last_period_to + 1/86400;
6268
6269 --
6270 --Go back 5 mins so that all the data commits etc would be done
6274
6271 --
6272 --l_end_date := sysdate - 5/(60*24);
6273 l_end_date := sysdate;
6275 Truncate_Table('BIX_EMAIL_DETAILS_STG');
6276 -- ?? Need code review for date logic - do we need TRUNC etc
6277 --Check to see if the media or interaction table was updated after the last time the ICI program
6278 --was run. If so, store the date so that we go back and recollect those dates to get the latest
6279 --information. This will happen in case of re-routes where the ACCOUNT/CLASSIFICATION on
6280 --JTF_IH_MEDIA_ITEMS changes or it can happen when the PARTY_ID changes.
6281 --
6282
6283 SELECT min(med.start_date_time)
6284 INTO l_min_media_date
6285 FROM jtf_ih_media_items med, jtf_ih_interactions int, jtf_ih_activities act,
6286 jtf_ih_media_item_lc_segs segs, jtf_ih_media_itm_lc_seg_tys tys
6287 WHERE med.media_item_type = 'EMAIL'
6288 AND int.interaction_id = act.interaction_id
6289 AND med.media_id = act.media_id
6290 AND med.media_id = segs.media_id
6291 AND segs.milcs_type_id = tys.milcs_type_id
6292 AND (
6293 (med.last_update_date BETWEEN l_last_period_to AND l_end_date
6294 --AND milcs_code in ('EMAIL_REROUTED_DIFF_ACCT', 'EMAIL_REROUTED_DIFF_CLASS')
6295 )
6296 OR int.last_update_date BETWEEN l_last_period_to AND l_end_date
6297 );
6298
6299 IF l_min_media_date >= l_last_period_to OR l_min_media_date IS NULL THEN
6300 --
6301 --This means there were no medias or interactions which got changed after ICI
6302 --collected them.
6303 --
6304 write_log('No updates to media or interaction which have already been collected');
6305 write_log('l_min_media_date ' || l_min_media_date || ' greater than last_period_to ' ||
6306 to_char(l_last_period_to,'DD-MON-YYYY HH24:MI:SS'));
6307 NULL;
6308 ELSIF l_min_media_date < l_last_period_to
6309 THEN
6310
6311
6312 write_log('l_min_media_date ' || l_min_media_date || ' less than last_period_to ' ||
6313 to_char(l_last_period_to,'DD-MON-YYYY HH24:MI:SS'));
6314
6315 --
6316 --Using the values which are going to be deleted, ROLLUP as negative values
6317 --so that the higher level period types get subtracted. This is needed since we cannot
6318 --do FIRST_VALUE in MV. Hence ROLLUP cannot be moved into the MV layer.
6319 --
6320 --?????
6321 --we are changing the original ROLLUP and forcing to do a SUM even for the queue measures so
6322 --that they will cancel out with the newly added negative numbers. Is this okay to do??
6323 --also, what to do about oldest open age and oldest open date etc?
6324 --???
6325 --
6326 rollup_negatives(trunc(l_min_media_date));
6327 write_log ('FInished rolling up negative values');
6328
6329 --
6330 --This means there are some old medias or old interactions which changed after ICI
6331 --collected them.
6332 --
6333
6334
6335 /*
6336 DELETE BIX_EMAIL_DETAILS_F
6337 WHERE period_start_date >= trunc(l_min_media_date)
6338 AND period_type_id = 1;
6339 */
6340 --Update all the measures to 0 except the onedone,twodone resolution measures and interaction threads
6341 update bix_email_details_f
6342 set
6343 LAST_UPDATED_BY =g_user_id,
6344 LAST_UPDATE_DATE =g_sysdate,
6345 EMAILS_OFFERED_IN_PERIOD =null,
6346 EMAILS_FETCHED_IN_PERIOD =null,
6347 EMAILS_REPLIED_IN_PERIOD =null,
6348 EMAILS_RPLD_BY_GOAL_IN_PERIOD =null,
6349 AGENT_EMAILS_RPLD_BY_GOAL =null,
6350 EMAILS_DELETED_IN_PERIOD =null,
6351 EMAILS_TRNSFRD_OUT_IN_PERIOD =null,
6352 EMAILS_TRNSFRD_IN_IN_PERIOD =null,
6353 EMAILS_RSL_AND_TRFD_IN_PERIOD =null,
6354 EMAILS_ASSIGNED_IN_PERIOD =null,
6355 EMAILS_AUTO_ROUTED_IN_PERIOD =null,
6356 EMAILS_AUTO_UPTD_SR_IN_PERIOD =null,
6357 SR_CREATED_IN_PERIOD =null,
6358 ACCUMULATED_OPEN_EMAILS =null,
6359 ACCUMULATED_OPEN_AGE =null,
6360 OLDEST_EMAIL_OPEN_DATE =to_date(null),
6361 ACCUMULATED_EMAILS_IN_QUEUE =null,
6362 ACCUMULATED_QUEUE_TIME =null,
6363 OLDEST_EMAIL_QUEUE_DATE =to_date(null),
6364 EMAIL_RESP_TIME_IN_PERIOD =null,
6365 AGENT_RESP_TIME_IN_PERIOD =null,
6366 ACCUMULATED_EMAILS_ONE_DAY =null,
6367 ACCUMULATED_EMAILS_THREE_DAYS =null,
6368 ACCUMULATED_EMAILS_WEEK =null,
6369 ACCUMULATED_EMAILS_WEEK_PLUS =null,
6370 EMAILS_AUTO_REPLIED_IN_PERIOD =null,
6371 EMAILS_AUTO_DELETED_IN_PERIOD =null,
6372 EMAILS_AUTO_RESOLVED_IN_PERIOD =null,
6373 EMAILS_ORR_COUNT_IN_PERIOD =null,
6374 EMAILS_COMPOSED_IN_PERIOD =null,
6375 LEADS_CREATED_IN_PERIOD =null,
6376 EMAILS_REROUTED_IN_PERIOD =null,
6377 ONE_RSLN_IN_PERIOD =null,
6378 TWO_RSLN_IN_PERIOD =null,
6379 THREE_RSLN_IN_PERIOD =null,
6380 FOUR_RSLN_IN_PERIOD =null,
6381 INTERACTION_THREADS_IN_PERIOD =null,
6382 REQUEST_ID=g_request_id
6383 --WHERE period_start_date >= trunc(l_min_media_date)
6384 WHERE time_id >= to_number(to_char(trunc(l_min_media_date),'J'))
6385 AND period_type_id = 1;
6386
6387
6388 --
6389 --??SHOULD WE DELETE OR JUST UPDATE TO ALL ZERO VALUES - LATTER MIGHT
6390 --PERFORM BETTER
6391 --
6392
6393 COMMIT;
6394 write_log ('Finished deleting bix_email_details_f');
6395
6396 DELETE BIX_INTERACTIONS_TEMP BIXTEMP
6397 WHERE EXISTS
6398 (
6399 SELECT INTERACTION_ID
6400 FROM JTF_IH_INTERACTIONS INT
6401 WHERE START_DATE_TIME >= trunc(l_min_media_date)
6402 AND INT.INTERACTION_ID = BIXTEMP.INTERACTION_ID
6403 );
6404
6405 COMMIT;
6406
6407 write_log ('Finished deleting bix_interactions_temp');
6408
6409 --
6410 --Set l_last_period_to to l_min_media_date to recollect the days
6411 --it might turn out that even days which werent affected need to be recollected - but the most frequent
6412 --case where this happens is the change of the default customer which should happen
6413 --within a few days of the email coming in, it should not have a signifcant performance impact.
6414 --
6415 l_last_period_to := trunc(l_min_media_date);
6416
6417 END IF;
6418
6419
6420 --l_last_period_to:=to_date('25/7/2004','dd/mm/yyyy');
6421 --l_end_date:=to_date('07/19/2004 01:00','mm/dd/yyyy hh24:mi');
6422
6423 write_log ('Calling MAIN with start date ' || l_last_period_to || ' l_end_date ' || l_end_date);
6424 Main(errbuf,
6425 retcode,
6426 TO_CHAR(l_last_period_to, 'YYYY/MM/DD HH24:MI:SS'),
6427 TO_CHAR(l_end_date, 'YYYY/MM/DD HH24:MI:SS'),
6428 p_number_of_processes);
6429 EXCEPTION
6430 WHEN OTHERS THEN
6431 RAISE;
6432 END load;
6433
6434 END BIX_EMAILS_SUMMARY_PKG;