В таблице пользователей есть колонка middle_name, в которой часто хранится NULL. Что вернёт выражение COUNT(middle_name)?

AЧисло всех строк таблицы, включая те, где значение колонки равно NULL
BЧисло строк, в которых значение колонки middle_name не равно NULL
CЗначение NULL, если в колонке middle_name встречается хотя бы одно NULL
DНоль для любой колонки, в которой есть хотя бы одно значение NULL
Правильный ответ. COUNT(колонка) считает только строки с не-NULL значением в этой колонке.

Разбор

Агрегат COUNT(колонка) пропускает строки, где значение этой колонки равно NULL, и считает только заполненные. Чтобы получить количество всех строк независимо от пропусков, используют COUNT(*). Поэтому разница между COUNT(*) и COUNT(middle_name) показывает, сколько пользователей не указали отчество. Это базовое поведение полезно помнить при подсчёте конверсий по необязательным полям.

Проверь себя · 1/3разбор после ответа
Нужно получить количество заказов по паре (user_id, status) из таблицы orders. Какой запрос верный?
Тренировать SQL в Telegram

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