2015-01-29 3 views
0

У меня есть запрос, который показывает объем в неделю Pass/Fails для теста как два отдельных столбца. Я хочу добавить третий столбец, который показывает процент сбоев - (1/(Failed + Passed)) * Failed.Oracle SQL - Показать процент двух столбцов в новом столбце

SELECT to_char(DATE,'YYYY'), to_char(DATE,'WW'), 
    SUM(case WHEN Result = 'Y' then 1 else 0 end) Failed, 
    SUM(case WHEN Result = 'N' then 1 else 0 end) Passed 
FROM Result_table 
GROUP BY to_char(DATE,'YYYY'), to_char(DATE,'WW') 
ORDER BY to_char(DATE,'YYYY'), to_char(DATE,'WW'); 

Я считаю, что я должен использовать выше в качестве суб запроса (так что не удалось и Прошёл уже определены), однако, я получаю ошибки - так что я не уверен, что это правильный подход.

Любая помощь будет высоко оценена.

Приветствия

+0

Как вы пытались использовать его в подзапросе и какие ошибки вы получили? –

ответ

1

Чтобы использовать это в качестве подзапроса вам нужно переместить order by на внешний запрос, что означает, что вам нужно в год и неделю столбцы так быть псевдонимами:

SELECT year_num, week_num, failed, passed, 
    100 * failed/(failed + passed) as failed_percent 
FROM (
    SELECT to_char(DATE,'YYYY') as year_num, 
    to_char(DATE,'WW') as week_num, 
    SUM(case WHEN Result = 'Y' then 1 else 0 end) as failed, 
    SUM(case WHEN Result = 'N' then 1 else 0 end) as passed 
    FROM Result_table 
    GROUP BY to_char(DATE,'YYYY'), to_char(DATE,'WW') 
) 
ORDER BY year_num, week_num; 
+0

Отлично! Это не только работает, но также точно определяет, что я делал неправильно (даже не видя, что я пытался). – user1444329

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