В столбце amount значения 10, 20, NULL, 30, NULL. Чему равны SUM(amount) и AVG(amount)?

AОбе функции SUM и AVG вернут NULL, если в столбце есть хотя бы одно пустое значение
BОбе функции пропустят NULL: SUM вернёт сумму не-NULL строк, AVG разделит её на число не-NULL строк
CОбе функции SUM и AVG заменят NULL на 0 и включат такие строки в расчёт автоматически
DФункция SUM вернёт сумму не-NULL строк, а AVG разделит её на общее число строк включая NULL
Правильный ответ. Обе функции игнорируют NULL: SUM вернёт 60, а AVG разделит 60 на 3 (число не-NULL строк) и вернёт 20.

Разбор

По стандарту SQL агрегатные функции SUM, AVG, MIN, MAX пропускают NULL-значения. SUM вернёт 10+20+30=60. AVG разделит 60 на 3 (не на 5) — вернёт 20. Если нужно учитывать NULL как ноль, используют AVG(COALESCE(amount, 0)) — тогда знаменатель будет 5, а результат 12.

Проверь себя · 1/3разбор после ответа
В таблице users есть колонка middle_name, в которой часто хранится NULL. Что вернёт выражение COUNT(middle_name)?
Тренировать SQL в Telegram

Ещё вопросы по теме «Агрегация, GROUP BY и HAVING»