2014-02-07 5 views
1

У меня проблема в моем запросе. Я не могу получить процент, независимо от того, как я пытаюсь. Пожалуйста, помогите мне. Мне нужно получить процентное время создания и закрытия времени POS и NON-POS в отдельном запросе. Я всегда получаю сообщение об ошибке. Благодаря!Как получить процент в оракуле?

Запрос:

Для 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; 

Для NON 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 

Выход потребности образца:

ДЛЯ POS

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

ДЛЯ 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

Смежные вопросы