통계쿼리에 대해서 질문드립니다. 0 1 1,666

by InSilence [SQL Query] [2011.10.18 16:15:03]


제가 구할려는 통계가 접수일시와 처리일시를 가지고 당일처리율을 뽑을려고 합니다.


SELECT   ROUND(TO_DATE(A.CHEORI_ILJA||A.CHEORI_SIGAN, 'YYYYMMDDHH24MI') - TO_DATE(A.JEOPSUJA_ILJA||A.JEOPSUJA_SIGAN, 'YYYYMMDDHH24MI'), 0) AS JEONGSU
  FROM ATIT_PCSERVICE_M A
WHERE A.JEOPSUJA_ILJA IS NOT NULL
  AND A.CHEORI_ILJA IS NOT NULL
  AND A.SINCHEONG_ILJA BETWEEN '20110801' AND '20110931'  
  ORDER BY A.JEOPSUJA_ILJA 

이 쿼리를 실행했을때 결과값이

0
1
2
0

라는 결과값이 나옵니다.

0이면 당일처리이고 1이면 하루 지난것 2이면 이틀 지난것을 의미합니다.

당일처리율 갯수를 가져오기 위하여

SELECT A.JEONGSU
,    COUNT(A.JEONGSU) AS CNT
  FROM
    (
    SELECT   ROUND(TO_DATE(A.CHEORI_ILJA||A.CHEORI_SIGAN, 'YYYYMMDDHH24MI') - TO_DATE(A.JEOPSUJA_ILJA||A.JEOPSUJA_SIGAN, 'YYYYMMDDHH24MI'), 0) AS JEONGSU
  FROM ATIT_PCSERVICE_M A
WHERE A.JEOPSUJA_ILJA IS NOT NULL
  AND A.CHEORI_ILJA IS NOT NULL
  AND A.SINCHEONG_ILJA BETWEEN '20110801' AND '20110931'  
  ORDER BY A.JEOPSUJA_ILJA 
   ) A
  GROUP BY A.JEONGSU

1 1
2 1
0 2

이렇게 서브 쿼리를 이용해서 0, 1, 2 등의 갯수를 가져옵니다.

비율을 가져올때 문제가 되는것이 자기갯수/전체갯수*100을 해야 하는데 전체갯수를 어떻게 가져와야 할지

몰라서 질문을 드립니다.
by 마농 [2011.10.18 16:47:38]
, ROUND(RATIO_TO_REPORT(COUNT(*)) OVER() * 100, 2) AS ratio
-- 서브쿼리 안의 Order By 는 불필요한 코드입니다. 빼세요.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입