Mayzer
@Mayzer
Yes it is!

Как в sqlite сгрупировать записи по интервалу?

Есть в таблице колонка author и timestamp. Мне нужно сгрупировать записи(получить их количество) по автору с интервалом в 3 часа.

Нпример:

Юзер 1: 10 записей
Юзер 2: 1 записей
Юзер 3: 11 записей
Юзер 1: 3 записей
Юзер 3: 5 записей
  • Вопрос задан
  • 131 просмотр
Пригласить эксперта
Ответы на вопрос 1
@deliro
https://www.sqlite.org/lang_datefunc.html

Используя stftime извлекаешь отдельно год, месяц, день и час. Часы группируешь по 3 штуки. Как это сделать — тебе виднее. Например, поделить час нацело на 3 (что sqlite и делает по умолчанию с двумя целыми числами). Остаётся сделать запрос вида
SELECT 
  strftime('%Y', timestamp) as year, 
  strftime('%m', timestamp) as month, 
  strftime('%d', timestamp) as day, 
  strftime('%H', timestamp) / 3 as grouped_hour, 
  author, 
  COUNT(*) 
FROM table 
GROUP BY year, month, day, grouped_hour, author


P.S. отсчёт в grouped_hour начинается с 0. 0 соответствует интервалу 00:00:00 – 02:59:59, 1 — 03:00:00 – 05:59:59 и т.д.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы