我是Oracle SQL和PL / SQL的新手。 我受命从3个表中获取记录。 mccm_ops_monitoring_1_day,其中包含当天的数据; mccm_ops_monitoring_7_days,其中包含最近7天的数据。基于这些表的连接以及静态表alarm_control_table,我需要找到当前天和最近7天的平均值之间的差异。结果应在15分钟的mccm_ops_monitoring_1_day中分组。间隔。我创建了查询并获得了预期的结果。 麻烦的是,我必须将这些结果放在另一个表中,该表通过运行查询每15分钟更新一次。我尝试使用一个过程来完成它,并安排了一个作业,但这导致记录重复工作运行的次数。因此,我不得不放弃该程序。我尝试使用物化视图,但它本身并没有刷新。
查询如下。请帮助我找到解决方案。
SELECT
to_timestamp((TO_CHAR(SYSDATE,'DD-MON-RR')|| ' '|| TO_CHAR(m.contact_date,'HH:MI:SS AM')), 'DD-MON-RR HH:MI:SS AM') AS contact_date,
m.interactivechannelname,
m.interactionpointname,
nvl(m.channel_type,'UNKNOWN')channel_type,
m.cbu,
m.segment,
m.visits todays_visits,
nvl(w.visits,0) last_7_days_visits,
m.visits - nvl(w.visits,0) today_vs_7days_visits_diff,
m.accepts todays_accepts,
nvl(w.accepts,0) last_7_days_accepts,
m.accepts - nvl(w.accepts,0) today_vs_7days_accepts,
CASE
WHEN ( m.visits - w.visits ) / 100 > c.visit_threshold OR ( w.visits - m.visits ) / 100 > c.visit_threshold THEN 'YES'
WHEN ( m.accepts - w.accepts ) / 100 > c.accept_threshold OR ( w.accepts - m.accepts ) / 100 > c.accept_threshold THEN 'YES'
END
AS alert_msg,
CASE
WHEN ( m.visits - w.visits ) / 100 > c.visit_threshold OR ( w.visits - m.visits ) / 100 > c.visit_threshold THEN c.alarm_text
WHEN ( m.accepts - w.accepts ) / 100 > c.accept_threshold OR ( w.accepts - m.accepts ) / 100 > c.accept_threshold THEN c.alarm_text
END
AS alarm_text
FROM
mccm_ops_monitoring_1_days m
LEFT JOIN mccm_ops_monitoring_7_days w ON TO_CHAR(m.contact_date,'HH24:MI:SS AM') = TO_CHAR(w.contact_date,'HH24:MI:SS AM')
AND m.interactivechannelname = w.interactivechannelname
AND m.interactionpointname = w.interactionpointname
AND nvl(m.channel_type,'UNKNOWN') = nvl(w.channel_type,'UNKNOWN')
AND m.cbu = w.cbu
AND m.segment = w.segment
LEFT JOIN alarm_control_table c ON m.interactivechannelname = c.interactivechannelname
AND m.interactionpointname = c.interactionpointname
AND nvl(m.channel_type,'UNKNOWN') = nvl(c.channel_type,'UNKNOWN')
AND m.cbu = c.cbu
AND m.segment = c.segment;
答案 0 :(得分:0)
如果要求允许,您可以截断并加载过程中的数据。它应该解决重复的问题。