У меня есть база данных под названием люди, в которой всего 8398 записей. Я знаю это, потому что выполнил следующий запрос с функцией COUNT.
SELECT COUNT(*)
FROM people;
Однако, когда я выполняю COUNT в столбце даты рождения, я обнаруживаю, что это возвращает только 6152 записи. Это потому, что функция COUNT автоматически исключает значения NULL в столбце даты рождения?
SELECT COUNT(birthdate)
FROM people;
Как я могу подсчитать все столбцы, которые имеют NULL в столбце дня рождения?
select count(birthdate) from people where birthdate is not null@WillardSolutions семантически то же самое. И, скорее всего, так же по производительности.
Может ли кто-нибудь дать ответ вместо комментариев?
@ user1554264, непонятно, о чем вы спрашиваете: ваш последний запрос делает именно то, что вы просили.
@ user1554264 Какой именно ваш вопрос не получил ответа в комментариях?
@zerkms Я согрешил, исправил свой ответ - прошу прощения за недоразумение
select count(1) from people where birthdate is nullИли SELECT COUNT(*) (что более идиоматично и для некоторых СУБД может быть более производительным)
Я решил использовать SELECT COUNT(*) FROM people WHERE birthdate is NULL; - похоже, добился желаемого результата с помощью простого синтаксиса.


How could I perform a count of all the columns that are NULL in the birthday column?
Проверьте, является ли столбец нулевым, используя выражение CASE:
SELECT COUNT(CASE WHEN birthdate IS NULL THEN 1 END)
FROM people;
Выражение оценивается как 1, когда birthdate имеет значение NULL, и как NULL, когда brthdate не равно NULL. Поскольку COUNT считает только ненулевые значения, вы получите количество NULL в столбце birthdate.
Привет, я решил использовать SELECT COUNT(*) FROM people WHERE birthdate is NULL; , так как это, кажется, достигло результата, которого я хотел.
COUNT(expr)подсчитывает количество строк, в которыхexprоценивается как неNULL.