В таблице пользователей 1000 строк, у 200 из них поле email равно NULL. Чем будут отличаться результаты SELECT COUNT(*) FROM users и SELECT COUNT(email) FROM users?

AОба запроса вернут 1000: функция COUNT подсчитывает все строки таблицы независимо от значений в столбцах
BОба запроса вернут 800: строки со значением NULL пропускаются обеими функциями подсчёта по одинаковому правилу
CПервый вернёт 800 без NULL, второй вернёт 1000 как полное число строк таблицы пользователей в выдаче
DПервый вернёт 1000 (число строк), второй вернёт 800: COUNT(email) пропускает строки со значением NULL
Правильный ответ. COUNT(*) считает все строки, а COUNT(столбец) считает только строки, где значение столбца не равно NULL.

Разбор

COUNT(*) подсчитывает количество строк в результате независимо от значений в столбцах — для 1000 строк вернёт 1000. COUNT(email) подсчитывает только строки, где email не равен NULL — вернёт 800. Это важное отличие при работе с данными, где есть пропуски: путаница между этими функциями приводит к неверной оценке наполненности столбца.

Проверь себя · 1/3разбор после ответа
Что вернёт запрос SELECT DISTINCT city, country FROM users, если в таблице есть повторяющиеся пары city-country?
Тренировать SQL в Telegram

Ещё вопросы по теме «Основы SQL-запросов»