-1

Excelシートに3列の値があります

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

3 つの列の合計は、着信コールの数 (CTI) = 37017 (これは、ラップされたコールの数 + CCR への失敗した転送の数 (CTI) + ラップされていないコールの数の合計です)

また、不明な通話の数も計算します (これは、ラップされた通話の数 - CCR (CTI) への失敗した転送の数 - ラップされていない通話の数) の部分です)

したがって、不明な通話の数 = 1163

ここで、カウントされていない呼び出しの割合を調べる必要があるため、37017/1163 を割ります

したがって、私のパーセンテージは 3% です。理想的には 0% である必要があります。3% のうち、A、B、または C に含まれるパーセンテージをオラクルで調べるにはどうすればよいですか。

4

1 に答える 1

0

ABC はデータベース qry から取得され、ソースは同じですが、AB と C の各 qry に対して異なるフィルターが多数含まれています。

これにより、A、B、または C のいずれによっても取得されない行のパターンを見つけることができるかもしれませんが、各行 (または行のパターン) を期待する 3 つのクエリのどれを解決する必要があります。にピックアップされたこと、およびなぜ見逃したのか。

追加のフィルターを使用した 3 つのクエリのカウントの合計は、これらのフィルターを使用しないクエリのカウントよりも少ないため、フィルター自体にギャップがあるようです。推測する必要がある場合、最初に探すのは、null値の誤った処理であり、それらを同等にしようとします(nullは、それ自体でさえも、等しくないか、等しくないため)。しかし、これは明らかに憶測であり、フィルターを確認せずに、どの列が null になる可能性があるかを知らなければ、あまり役に立ちません。

minus'total' クエリによって取得され、A、B、および C を生成する行のいずれにも含まれない行を見つけるために使用することで、表示されていない 1163 行を分離することができます。何かのようなもの:

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>

ただし、最初のクエリに a が含まれていることに興味がありdistinctます。これは、呼び出し自体ではなく、スイッチ呼び出しが行われた回数を数えていることを示唆しているためです。また、カウントが加算されないことを意味する場合もあります-その場合、オーバーラップの可能性があるため、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 に答える