2013-11-02 2 views
1

Допустим, я работаю в call-центре, и я закрыл 10 звонков, но открыл 20 вызовов в день. «Реальная» цифра фактически равна -10. Несмотря на то, что цель закрыта на 10 вызовов, работник потерпел неудачу, потому что было открыто 20 вызовов.создание расчетного столбца с использованием SQL COUNT

Я хотел бы написать отчет SQL, чтобы отразить это. Но, похоже, проблема заключается в том, что я не могу вычислять цифры из совокупных показателей.

SELECT workername      AS Name, 
     (SELECT Count(closeddate) 
     FROM mybanksupport 
     WHERE closeddate = NULL)  OPENCALLS, 
     (SELECT Count(closeddate) 
     FROM mybanksupport 
     WHERE closeddate = NOT NULL) CLOSEDCALLS, 
     (SELECT opencalls - closedcalls) REALCALLS 
FROM mybanksupport 

Короче говоря, я хочу, чтобы вычислить значение отсчета 2 столбцов, а затем использовать это значение для получения другого вычисляемого столбца под названием Real Calls

+0

BTW, ответ на который, как я думаю, исправляет ваш вопрос, но указывая, что я думаю, что вам также нужна дополнительная квалификация? Соневы выбираете из mybanksupport, вам не нужно квалифицироваться по имени? Как вы хотите, чтобы счет закрылся только для этого конкретного работника. Поскольку у вас это есть, я думаю, что это будет стоить для ВСЕХ работников – asantaballa

ответ

2

COUNT только считает значения, т.е. игнорирует NULL с. Это свойство можно использовать просто для вашего выражения:

SELECT workername, closedCalls, totalCalls - closedCalss AS openCalls 
FROM (SELECT workername, COUNT(closeddate) AS closedcalls, COUNT(*) totalCalls 
     FROM  mybanksupport 
     GROUP BY workername) t 
0

Write как подзапрос, то вы можете использовать поля формы, которые, как вы хотите

Select 
    workername 
, OPENCALLS 
, CLOSEDCALLS 
, (OPENCALLS - CLOSEDCALLS) REALCALLS 
From 
(
SELECT workername      AS Name, 
     (SELECT Count(closeddate) 
     FROM mybanksupport 
     WHERE closeddate = NULL)  OPENCALLS, 
     (SELECT Count(closeddate) 
     FROM mybanksupport 
     WHERE closeddate = NOT NULL) CLOSEDCALLS, 
FROM mybanksupport 
) T1 
+1

Этот ответ не связывает работников со своими вызовами. –

+0

Спасибо, @DanBracuk. Я следовал его первоначальному запросу, но прокомментировал это на исходном посту. – asantaballa

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