Запрос: 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, чтобы все дни одного месяца попали в одну группу. Какой подход правильный?
Ещё вопросы по теме «Агрегация, GROUP BY и HAVING»
- Что делает оператор `DISTINCT` в `SELECT`-запросе?
- Что делает оператор `HAVING` в SQL-запросе с группировкой?
- Есть таблица `orders(user_id, amount)`. Какой запрос посчитает сумму всех заказов по каждому пользователю?
- Нужно посчитать сумму оплаченных заказов по каждому пользователю. В таблице `orders` есть поля `user_id`, `amount`, `status`. Какой запрос корректен и наиболее эффективен?
- В таблице пользователей есть колонка `middle_name`, в которой часто хранится `NULL`. Что вернёт выражение `COUNT(middle_name)`?
- Все вопросы по «Агрегация, GROUP BY и HAVING» →