Запрос: SELECT country, COUNT(DISTINCT user_id) FROM events GROUP BY country. Таблица содержит повторяющиеся строки. Что посчитает функция?

AУникальные user_id считаются отдельно внутри каждой группы по country и независимо для разных стран
BРезультат совпадает с COUNT(user_id) в каждой группе при наличии GROUP BY country в запросе
CСочетание COUNT(DISTINCT user_id) и GROUP BY в одном запросе требует подзапроса по таблице
DСчитает уникальных пользователей по всей таблице целиком, без учёта разбивки по столбцу country
Правильный ответ. COUNT(DISTINCT col) внутри GROUP BY считает уникальные значения столбца отдельно в каждой группе, а не по всей таблице.

Разбор

COUNT(DISTINCT expr) всегда работает в границах текущей группы. При группировке по стране уникальные user_id считаются отдельно для каждой страны. Если пользователь совершил события в двух странах, он будет засчитан в обеих группах — это ожидаемое поведение, а не ошибка. Никакого запрета на сочетание DISTINCT и GROUP BY нет.

Проверь себя · 1/3разбор после ответа
Нужно сгруппировать события по календарному месяцу в PostgreSQL, чтобы все дни одного месяца попали в одну группу. Какой подход правильный?
Тренировать SQL в Telegram

Ещё вопросы по теме «Агрегация, GROUP BY и HAVING»