В условиях WHERE два NULL значения считаются различными. Но при группировке строк GROUP BY NULL значения считаются идентичными и объединяются в одну группу (как и при исключении повторяющихся строк DISTINCT).
Подсчитаем количество использований номеров телефонов в магазинах:
SELECT phone, count (*)
FROM store_address
GROUP BY phone
| phone | count |
|---|---|
| NULL | 3 |
| 7(347)668‒56‒66 | 1 |
| 7(385)777‒77‒07 | 1 |
| 7(495)312‒03‒08 | 3 |
| 7(812)700‒03‒03 | 1 |
| ... | ... |
В таблице store_address для трех адресов магазинов не указан номер телефона. Поэтому в результате мы видим строку
| phone | count |
|---|---|
| NULL | 3 |
Если бы NULL значения в GROUP BY считались различными, то мы бы получили вот такой результат:
| phone | count |
|---|---|
| NULL | 1 |
| NULL | 1 |
| NULL | 1 |
Что неудобно для проведения аналитики.