AVG и NULL: среднее не по тем

Средняя сумма сделки за месяц — простая сводка для отчёта:

SELECT AVG(amount) AS средний_чек
FROM receipts;

Число выходит бодрое. Но если у части строк графа amount не заполнена — призрак вместо цифры, — AVG эти строки не считает ни в числителе, ни в знаменателе. Он вообще делает вид, что их не было.

«AVG не занижает среднее пустыми строками. Он их полностью выкидывает — как будто этих сделок вовсе не случалось.»

По чему именно считается это среднее?

Отсюда и разница между «средний чек по документам» и «средний чек по всем визитам»: они считаются по разным знаменателям, хотя оба зовутся одинаково.

Если пустая графа должна считаться нулём — подставьте ноль сами, до усреднения.

SELECT AVG(COALESCE(amount, 0)) AS средний_чек_с_нулями
FROM receipts;
-- теперь пустые строки участвуют как 0, а не исчезают из счёта
«Спросите не „какое среднее“, а „среднее по чему именно“. Ответ на второй вопрос обычно и есть настоящая улика.»

Среднее не по тем — улика тихая и очень обидная. В архиве на ней держится целое дело.

$0
тащи карточки за верхнюю кромку · «+ стикер» · «🧵 нить» — клик по двум

ЛОТОК УЛИК

во вкладке SQL найди подозреваемых и жми «+ доска»

НА ПРОВЕРКУ

теории из «Заметок» отправляются сюда — подтверди на доске или удали
Ctrl+Enter · «+ доска» на строке — выбрать поля и перенестипиши запрос, я подожду
Результат появится здесь.

Картотека

Заметки

Факты

Теории на проверку

Подсказки

◆ РЕЖИМ АРХИВАРИУСАуправление картотекой дел · не виден игроку