Имеется таблица, в ней id_user и timestamp со временем входа этого пользователя в систему. Запрос должен выдать id тех юзеров, которые заходили чаще 3 раз за час в заданный промежуток времени. Чот не знаю с какой стороны подойти, да и получится ли вообще решить такую задачу просто запросом.
Сергей Горностаев, Не совсем правильно наверное описал задачу. Нужно выбрать не за последний час, а все id которые заходили 3 раза за час и чаще, например, вчера.
SELECT
id_user,
datetime((strftime('%s', timestamp) / 3600) * 3600, 'unixepoch') as interval
FROM some_table
GROUP BY interval, id_user
HAVING count(*) > 3;
В принципе решение более-менее норм. Но боюсь всетки нужно учитывать период между авторизациями в 60мин. Т.е. если юзер зашел в 11:50 и в 12:11 тоже должно учитываться. Как с этой стороны подойти не подскажите?
select
t1.user_id
from
(
select
user_id
from users
where timestamp BETWEEN strftime('%m/%d/%Y %H:%M', datetime('now','localtime'), '-1 hours')
AND strftime('%m/%d/%Y %H:%M',datetime('now','localtime'));
) t1
group by t1.user_id
having count(*) > 3