Как посчитать уникальных пользователей БД, если пользователь появляется несколько раз

«Как посчитать уникальных пользователей БД, если пользователь появляется несколько раз» — вопрос из категории Базы данных, который задают на 24% собеседований Бизнес Аналитик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для подсчёта уникальных пользователей в SQL используй COUNT(DISTINCT user_id). Это исключит дубликаты, учитывая каждого пользователя только один раз.

Пример:

SELECT COUNT(DISTINCT user_id) AS unique_users
FROM user_activity;

Если нужно анализировать уникальность по нескольким полям (например, user_id + session_id), можно использовать:

SELECT COUNT(DISTINCT CONCAT(user_id, '-', session_id)) AS unique_sessions
FROM user_activity;

В NoSQL (например, MongoDB) применяй $group с $addToSet:

db.user_activity.aggregate([
  { $group: { _id: "$user_id", count: { $sum: 1 } } },
  { $count: "unique_users" }
]);

Для больших данных эффективнее предварительная агрегация или приближённые методы (HyperLogLog).