Сочетание IF с AVG в MySQL - PullRequest
       2

Сочетание IF с AVG в MySQL

2 голосов
/ 14 февраля 2011

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

В основном, я пробовал следующие варианты:

ВЫБРАТЬ avg (ЕСЛИ (CAST (значение КАК ПОДПИСАНО) <550, значение 100)) КАК выход ... </p>

Другими словами, я хочу включить только значения, которые меньше 550, как среднее значение, в противном случае вернуть 100 для этой ячейки как часть среднего. Так что, если бы у меня были следующие значения:

150, 200, 600, 650

тогда запрос вычислит среднее из этих значений:

100, 100, 600, 650.

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

Спасибо!

Ответы [ 3 ]

4 голосов
/ 14 февраля 2011

Просто поверните IF вокруг ...,

SELECT AVG(IF(CAST(value AS SIGNED) < 550, 100, value)) AS output...
3 голосов
/ 14 февраля 2011
AVG(CASE WHEN value < 550 THEN 100 ELSE value END)
1 голос
/ 14 февраля 2011
select avg(case when value < 550 then 100 else value end) as output...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...