MySQL: как найти среднее значение для определенных строк?

0

У меня есть таблица продаж и нужно рассчитать среднее время вызова, когда дело выполнено. Я делаю запрос для каждого дня месяца.

Мой запрос

SELECT AVG(case when (outcome= 'Sale1' or outcome='Sale2') then call_length else 0 end) as avg_call_length
FROM SALES 
WHERE year(call_date)='2018' and month(call_date)='7' and day(call_date)='30'

Допустим, у меня есть 100 записей, тогда avg_call_length делится на 100, а не столько записей Sale1, либо Sale2. Как написать правильный запрос?

  • 1
    Пожалуйста, опубликуйте свою схему с примерами данных и ожидаемым результатом.
Теги:

1 ответ

1

Удалите case и переместить условие к where:

SELECT AVG(call_length) as avg_call_length
FROM SALES 
WHERE date(call_date) = '2018-07-30'
AND outcome IN ('Sale1', 'Sale2')

Обратите внимание на более простой способ кодирования условий.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню