В таблице пользователей есть колонка middle_name, в которой часто хранится NULL. Что вернёт выражение COUNT(middle_name)?
AЧисло всех строк таблицы, включая те, где значение колонки равно
NULLBЧисло строк, в которых значение колонки
middle_name не равно NULLCЗначение
NULL, если в колонке middle_name встречается хотя бы одно NULLDНоль для любой колонки, в которой есть хотя бы одно значение
NULLПравильный ответ.
COUNT(колонка) считает только строки с не-NULL значением в этой колонке.Разбор
Агрегат COUNT(колонка) пропускает строки, где значение этой колонки равно NULL, и считает только заполненные. Чтобы получить количество всех строк независимо от пропусков, используют COUNT(*). Поэтому разница между COUNT(*) и COUNT(middle_name) показывает, сколько пользователей не указали отчество. Это базовое поведение полезно помнить при подсчёте конверсий по необязательным полям.
Проверь себя · 1/3разбор после ответа
Нужно получить количество заказов по паре (
user_id, status) из таблицы orders. Какой запрос верный?Ещё вопросы по теме «Агрегация, GROUP BY и HAVING»
- Что делает оператор `DISTINCT` в `SELECT`-запросе?
- Что делает оператор `HAVING` в SQL-запросе с группировкой?
- Есть таблица `orders(user_id, amount)`. Какой запрос посчитает сумму всех заказов по каждому пользователю?
- Нужно посчитать сумму оплаченных заказов по каждому пользователю. В таблице `orders` есть поля `user_id`, `amount`, `status`. Какой запрос корректен и наиболее эффективен?
- Нужно получить количество заказов по паре (`user_id`, `status`) из таблицы `orders`. Какой запрос верный?
- Все вопросы по «Агрегация, GROUP BY и HAVING» →