Давайте попробуем задачу попроще: как посчитать, сколько человек вызывали определённый сервис за сутки?

Нужно считать уникальные устойчивые user_id за выбранные сутки, а не число запросов. Сначала определите часовой пояс, событие вызова и учёт анонимных клиентов.

Короткий ответ

Что ответить на собеседовании

Нужно считать уникальные устойчивые user_id за выбранные сутки, а не число запросов. Сначала определите часовой пояс, событие вызова и учёт анонимных клиентов.

Подробный разбор

Ответ с пояснениями

Нужно считать уникальные устойчивые user_id за выбранные сутки, а не число запросов. Сначала определите часовой пояс, событие вызова и учёт анонимных клиентов.

Для таблицы логических вызовов пример:

SELECT COUNT(DISTINCT user_id)
FROM service_calls
WHERE service_name = :service
  AND called_at >= :day_start
  AND called_at < :next_day_start;

Границы суток рассчитываются в нужном часовом поясе и передаются в формате хранения времени. DISTINCT убирает повторные вызовы одного пользователя; NULL не считается. Если нужно считать только успехи, добавьте соответствующий фильтр. IP не равен человеку, а для больших объёмов можно использовать приблизительный distinct-счётчик с явно допустимой погрешностью.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее