NULLを含むとき、COUNT(*)とCOUNT(列名)では結果が異なります。
| Col1 |
|---|
| 10 |
| (NULL) |
| 50 |
| (NULL) |
| 40 |
このようなTBL1テーブルを例にします。
COUNT(*)はNULLを含めてカウントします。
SELECT COUNT(*) FROM TBL1
count
-----
5
COUNT(列名)はNULLを含めません。
SELECT COUNT(COL1) FROM TBL1
count
-----
3
『SQL ゼロからはじめるデータベース操作』によると、
集約関数はNULLを除外する。ただし「COUNT(*)」は例外的にNULLを除外しない。
ということでした。