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