2014-02-07 104 views
1

我在查詢中遇到問題。無論我如何嘗試,我都無法獲得百分比。請幫幫我。我需要在個別查詢中每週獲取POS和NON-POS的百分比創建和關閉時間。我總是得到一個錯誤。謝謝!如何在oracle中獲取百分比?

查詢:

對於POS:

SELECT 'Data' 
||','||COUNT(CASE WHEN UPPER(TICKET_CUSTOMER_USER_ID) = UPPER('POS-generic') THEN 1 ELSE  NULL END) --POS 
FROM APP_ACCOUNT.OTRS_TICKET 
WHERE TRUNC(CREATE_TIME, 'IW') BETWEEN SYSDATE -119 AND SYSDATE -1 
AND trunc(CLOSE_TIME, 'IW') BETWEEN SYSDATE -119 AND SYSDATE -1; 

非POS

SELECT 'Data' 
||','||COUNT(CASE WHEN UPPER(TICKET_CUSTOMER_USER_ID) = UPPER('hcphuser') THEN 1 ELSE NULL END) --NON_POS 
FROM APP_ACCOUNT.OTRS_TICKET 
WHERE TRUNC(CREATE_TIME, 'IW') BETWEEN SYSDATE -119 AND SYSDATE -1 
AND trunc(CLOSE_TIME, 'IW') BETWEEN SYSDATE -119 AND SYSDATE -1; 

數據庫的一些輸出:

Name       ticket_customer_id create_time close_time 
-------------------------------------------------------------------------- 
Cannot access the Zimbra Email POS-generic  10/15/2013 10/15/2013 
Slow WIFI Connection   POS-generic  10/15/2013 10/16/2013 
Change phone number   hcphuser   10/17/2013 10/18/2013 

輸出樣本的需要:

FOR POS

Data, 10/10/2013, 50, 60% 
Data, 10/17/2013, 30, 40% 

FOR NON POS

Data, 10/10/2013, 70, 60% 
Data, 10/17/2013, 50, 40% 
+1

您所提供所需的輸出是事實很好,但你忘了提供輸入 - 從你想要輸出什麼輸入?源數據的示例也將有用。 –

+0

對不起。我現在更新我的問題的內容 – user3172075

+0

計算百分比應該可能涉及某種劃分,而查詢中沒有劃分運算符。 – mustaccio

回答

1

我想你需要一個內部的選擇..試試這個

SELECT 'Data', POS, NON_POS, ROUND((POS*100/(NON_POS + POS)),2) NON_POS_PERCENTAGE, 100 - ROUND((POS*100/(NON_POS + POS)),2) POS_PERCENTAGE 
    FROM (
     SELECT 70 POS, 
       30 NON_POS 
     FROM DUAL 
     ) 

     SELECT 'Data', POS, NON_POS, ROUND((POS*100/(NON_POS + POS)),2) NON_POS_PERCENTAGE, 100 - ROUND((POS*100/(NON_POS + POS)),2) POS_PERCENTAGE 
     FROM (
      SELECT COUNT(CASE WHEN UPPER(TICKET_CUSTOMER_USER_ID) = UPPER('POS-generic') THEN 1 ELSE  NULL END) POS, 
        COUNT(CASE WHEN UPPER(TICKET_CUSTOMER_USER_ID) = UPPER('hcphuser') THEN 1 ELSE NULL END) NON_POS 
      FROM APP_ACCOUNT.OTRS_TICKET 
      WHERE TRUNC(CREATE_TIME, 'IW') BETWEEN SYSDATE -119 AND SYSDATE -1 
      AND trunc(CLOSE_TIME, 'IW') BETWEEN SYSDATE -119 AND SYSDATE -1 
      ) 
+0

出現錯誤:未找到FROM關鍵字在預期的位置 – user3172075

+0

逗號缺失。你可以再次檢查它 – Calipso

+0

它的工作,但錯誤的輸出。我需要的輸出是每週結果,但查詢中的顯示結果僅爲總數:| – user3172075