различные события, например авторизация (event_type = 0) в системе.
Я хочу найти пользователей, которые авторизовывались в разные аккаунты с одного устройства (под одним устройством подразумевается случай, когда у двух событий авторизаций один и тот же client_ip и user_agent). Можете помочь с запросом?
Ну просто же, SELECT ... FROM WHERE ...
А разные акаунты это что?
Разные user_id, но один и тот же client_ip и user_agent
Тогда ты уже сам себе противоречишь, как НАЙТИ ПОЛЬЗОВАТЕЛЕЙ?
Достаточно найти эти user_id
Кроме того, в таблице нет первичного ключа, как видно... УЖЕ очень хреново и это не позволит решить задачу.
Что в твоей таблице идентифицирует одного пользователя ?
Я хочу найти пользователей, которые авторизовывались в — ЧТО ЕСТЬ ПОЛЬЗОВАТЕЛЬ?
Под пользователем имел ввиду тут значение user_id
ну, ходим по кругу.
В таблице есть первичный ключ event_id. Забыл его указать в списке полей
Есть таблица с полями user_id, event_type, client_ip, user_agent user_id — это пользователь, так? client_ip, user_agent — это акаунт, так?
в общем, шли DDL таблицы для начала, ок?
Таблица содержит список событий event_id - первичный ключ user_id - пользователь event_type - тип события client_ip - ip адрес устройства с которого пользователь входил в систему user_agent - идентификатор браузера, с которого пользователь входил в систему если у двух записей поля client_ip и user_agent имеют одинаковое значение, а user_id у этих записей отличается, то это подразумевается входом в систему под разными пользователями
select * from logg l1 where l1.event_type = 0 and exists( select * from logg l2 where l2.event_id <> l1.event_id and l2.client_ip = l1.client_ip and l2.user_agent = l1.user_agent and l2.user_id <> l1.user_id )
А если exists не поддерживается? (Clickhouse)
Я не знаю что там он поддерживает, не могу написать. Это ANSI SQL
Все равно спасибо за помощь! Придумаю как адаптировать запрос к кликхаусу
Обсуждают сегодня