Нужно считать уникальные устойчивые 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-счётчик с явно допустимой погрешностью.