What do you expect from the following query?
select count(*) as total, count(id) as by_id, count(first_name) as by_first_name, count(last_name) as by_last_name, count(birthdate) as by_birthdate from people
If the people table has the following data:
| id | first_name | last_name | birthdate | +----+------------+-----------+-----------+ | 1 | John | Doe | | | 2 | | Anonymous | |
The answer is:
| total | by_id | by_first_name | by_last_name | by_birthdate | +-------+-------+---------------+--------------+--------------+ | 2 | 2 | 1 | 2 | 0 |
It seems that all NULLs are not considered.