-1

我在excel表中有三列值

  A: # of unsuccessful transfers to CCR  (CTI) =11986
  B: # of calls NOT wrapped =8585
  C: # of wrapped calls= 15283

三列的总和是来电数(CTI)= 37017(这是已打包的呼叫数 + 到 CCR 的不成功转移数(CTI)的总和 + 未打包的呼叫数)

我还计算了未计入呼叫的数量(这是已打包呼叫数的减法 - 向 CCR (CTI) 的不成功转移数 - 未打包的呼叫数)

所以我的不明电话数 = 1163

现在我必须找出未计入电话的百分比,所以我除以 37017/1163

所以我的百分比是 3%,理想情况下应该是 0%,我如何在 oracle 中找出 3% 中有多少百分比落在 A、B 或 C 中。

4

1 回答 1

0

ABC 来自数据库 qry,来源相同,但 AB 和 C 的每个 qry 都有不同的过滤器

这可能允许您在任何 A、B 或 C 都没有拾取的行中发现一个模式,尽管您仍然需要计算出您期望每行(或行模式)的三个查询中的哪一个被接走,以及为什么他们被错过了。

由于具有附加过滤器的三个查询的计数总和低于没有这些过滤器的查询的计数,因此过滤器本身似乎存在差距。如果我不得不猜测,那么我首先要寻找的是对null值的错误处理,试图将它们等同起来(因为null既不等于也不等于任何东西,甚至它本身)。但这显然是推测,如果没有看到过滤器并且不知道哪些列可以为空,这并不是很有帮助。

您可以隔离未显示的 1163 行,方法是使用minus查找“total”查询拾取的行,并且不包含在任何产生 A、B 和 C 的行中;就像是:

select *
from xx_new.xx_cti_call_details@appsread.prd.com
where dealer_name = 'XYG'
and TRUNC(CREATION_DATE) BETWEEN '01-JUL-2012' AND '31-JUL-2012'
minus
select *
from xx_new.xx_cti_call_details@appsread.prd.com
where dealer_name = 'XYG'
and TRUNC(CREATION_DATE) BETWEEN '01-JUL-2012' AND '31-JUL-2012'
and <additional filters for A>
minus
select *
from xx_new.xx_cti_call_details@appsread.prd.com
where dealer_name = 'XYG'
and TRUNC(CREATION_DATE) BETWEEN '01-JUL-2012' AND '31-JUL-2012'
and <additional filters for B>
minus
select *
from xx_new.xx_cti_call_details@appsread.prd.com
where dealer_name = 'XYG'
and TRUNC(CREATION_DATE) BETWEEN '01-JUL-2012' AND '31-JUL-2012'
and <additional filters for C>

不过,我很好奇您distinct在初始查询中是否有 a,因为它表明您正在计算 switch 调用是来自而不是调用本身。这也可能意味着计数不应该相加——尽管在这种情况下,我可能期望 A+B+C 比简单的要大,因为可能存在重叠——并且select *实际上可能返回超过 1163 行;在这种情况下,您可能只想选择您认为可能有问题的列。

顺便说一句,如果creation_date被索引,那么你可能会得到更好的性能where creation_date >= date '2012-07-01' and creation_date < date '2012-08-01',因为trunk()函数会阻止索引被使用。不过对你来说可能不是问题。

于 2012-09-04T18:25:53.197 回答