0

정수를 백분율로 변환하는 방법을 모르겠습니다. 제발 도와주세요.정수를 백분율로 변환합니다.

SELECT 'Data' || ',' || 
     TO_CHAR(D.DTIME_DAY,'MM/dd/yyyy') || ',' || 
     NVL(o.CNT_OPENED,0) || ',' || --as cnt_opened 
     NVL(c.CNT_CLOSED,0)   --as cnt_closed 
    FROM OWNER_DWH.DC_DATE d 
    LEFT JOIN (SELECT TRUNC(t.CREATE_TIME, 'MM') AS report_date, 
        count(*) AS cnt_opened 
       FROM APP_ACCOUNT.OTRS_TICKET t 
       WHERE t.CREATE_TIME BETWEEN SYSDATE -120 AND SYSDATE 
       GROUP BY TRUNC(t.CREATE_TIME, 'MM')) o 
    ON d.DTIME_DAY=o.REPORT_DATE 
    LEFT JOIN (SELECT TRUNC(t.CLOSE_TIME, 'MM') as report_date, 
        count(*) AS cnt_closed 
       FROM APP_ACCOUNT.OTRS_TICKET t 
       WHERE t.CLOSE_TIME BETWEEN SYSDATE -120 AND SYSDATE 
       GROUP BY TRUNC(t.CLOSE_TIME, 'MM')) c 
    ON D.DTIME_DAY=c.REPORT_DATE 
    WHERE d.DTIME_DAY BETWEEN SYSDATE -120 AND TRUNC(SYSDATE) -1 AND 
     d.DTIME_DAY = TRUNC(d.DTIME_DAY, 'MM') AND 
     TRUNC(d.DTIME_DAY,'MM')= d.DTIME_DAY 
    ORDER BY D.DTIME_DAY; 

해당 쿼리의 출력 : 당신을 여기

이 쿼리의 감사

Data,10/01/2013,219,201 
Data,11/01/2013,249,234 
Data,12/01/2013,228,224 
Data,01/01/2014,269,256 
내가 필요

예를 들어, 출력은 다음과 같다 :

Data,10/01/2013,219, 52%, 201, 45% 
Data,11/01/2013,249, 75%, 234, 60% 
....... 
........ 

공식 :

create_time + close time = total/create_time (for cnt_opened each column) = percentage 
create_time + close time = total/close_time (for cnt_closed each column) = percentage 
012 3,516,
+0

수식을 표시하여 백분율을 표시 할 수 있습니까? –

+0

백분율 = 부분/전체 ... 그래서'count (*)'가 귀하의 일부입니까? – Charlesliam

+0

이미 수식 @MaheswaranRavisankar – user3098728

답변

2

이 시도 :

는 기본적으로 단지 CNT_OPENED 및 CNT_CLOSED의 총을 추가, 다음의 비율을 합계 100 및 분할하여 해당 곱하려는 중.

예 : CNT_OPENED = 219 및 CNT_CLOSED = 201 따라서 420이됩니다. CNT_OPENED에 100을 곱한 다음 420 -> (219 * 100)/420 = 52로 나눕니다. CNT_CLOSED를 사용하여 동일한 작업을 수행하십시오. CNT_OPENED 및 CNT_CLOSED 모두 당신은 단지 몇 그것을 밖으로 가지고 싶다면 또한 잠재적으로 당신에게 백만 소수점 이하 자릿수를 줄 것이다 0

SELECT 'Data' 
||','||TO_CHAR(D.DTIME_DAY,'MM/dd/yyyy') 
||','||NVL(o.CNT_OPENED,0) --as cnt_opened 
||','||(NVL(o.CNT_OPENED,0) * 100)/(NVL(o.CNT_OPENED,0) + NVL(o.CNT_CLOSED,0)) || '%' 
||','||NVL(c.CNT_CLOSED,0) --as cnt_closed 
||','||(NVL(o.CNT_CLOSED,0) * 100)/(NVL(o.CNT_OPENED,0) + NVL(o.CNT_CLOSED,0)) || '%' 

을 경우이 예외가 발생합니다 것을

주 TRUNC 함수를 사용하여 정밀도 (이 경우 소수점 2 자리)를 지정하면됩니다.

TRUNC((NVL(o.CNT_OPENED,0) * 100)/(NVL(o.CNT_OPENED,0) + NVL(o.CNT_CLOSED,0)), 2) 
+2

'% ''도 포함해야합니다. –

+0

자, 어떻게 cnt_opened 컬럼없이 백분율을 얻을 수 있습니까? 마찬가지로, 난 단지 cnt_closed를 얻고 싶습니까? 그리고 난 cnt_opened 표시 싶지 않아? @Joel – user3098728

+2

백분율을 계산할 전체 카운트를 가지려면 여전히 from 데이터를 가져야하지만, 표시하지 않으려면 select 절에서 데이터를 제거하십시오. 결국 '데이터'로 선택됩니다. || ','|| TO_CHAR (D.DTIME_DAY, 'MM/dd/yyyy') || ','|| NVL (c.CNT_CLOSED, 0) --as cnt_closed || ','|| (NVL (o.CNT_CLOSED, 0) * 100)/(NVL (o.CNT_OPENED, 0) + NVL (o.CNT_CLOSED, 0)) || '%' – Joel