2014-08-28 2 views
0

настоящее время у меня такой запрос:MySQL - это дополнительный запрос, который здесь нужен?

SELECT 
    sec_to_time(avg(t1.sessiontime)) as aloc, 
    count(*) as calls 
FROM 
    table1 AS t1 
    inner join 
    table2 as t2 ON t1.destination = t2.prefix 
WHERE 
    t1.card_id = '101' 
AND 
    t1.terminatecauseid = 1 
group by t1.destination 

Пример результата:

enter image description here

данных 'The называет' привязан к 't1.terminatecauseid = 1' (это означает только входящие вызовы)

Я бы хотел иметь процент ответов на звонки от всех сделанных звонков. тот же запрос без условия (t1.terminatecauseid = 1) даст мне сделанные общие вызовы.

Я хотел бы знать, что это лучший способ, чтобы добавить еще один столбец под названием «Средняя Success Rate», который будет делать: всех-звонки * успешные-звонки/100 ли подзапрос, что здесь нужно? или новый и другой запрос?

ответ

1
SELECT 
    sec_to_time(avg(t1.sessiontime)) as aloc, 
    sum(t1.terminatecauseid = 1) * 100/count(*) as Average_Success_Rate, 
    sum(t1.terminatecauseid = 1) as calls 
FROM 
    table1 AS t1 
    inner join 
    table2 as t2 ON t1.destination = t2.prefix 
WHERE 
    t1.card_id = '101' 
group by t1.destination 
+0

изменение на сумму (t1.terminatecauseid = 1) как на вызов, а не на счетчик (*), поскольку вызовы возвращают разные результаты, ваш путь лучше? –

+0

Я не понимаю, почему он должен возвращать разные результаты. 'count (*)' counts 'null' тоже, но это не должно быть здесь. Можете ли вы предоставить некоторые данные примера в [SQLFiddle] (http://sqlfiddle.com/)? –

+0

Он делает. Я пытаюсь понять, был ли мой путь ошибкой. результаты разные –

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