@ilya73

Выборка максимального почасового значения?

Имеем таблицу вида:
dt text | un integer
2018-12-28 00:18:35.881|208
2018-12-28 00:18:37.095|208
2018-12-28 00:18:40.095|209
2018-12-28 00:18:43.135|209
2018-12-28 00:18:49.155|209
2018-12-28 00:18:52.159|209
2018-12-28 00:18:56.983|209

Хочется получать max значение поля un за каждый час и в течении суток.
Пока ничего умнее не придумал, кроме как в цикле посылать:
select max(un),dt from d5 where dt between datetime('now','localtime','-1 hours') and datetime('now','localtime','-0 hours');
select max(un),dt from d5 where dt between datetime('now','localtime','-2 hours') and datetime('now','localtime','-1 hours');
.........
select max(un),dt from d5 where dt between datetime('now','localtime','-24 hours') and datetime('now','localtime','-23 hours');

Может есть более правильно и красивое решение?
  • Вопрос задан
  • 53 просмотра
Пригласить эксперта
Ответы на вопрос 1
unfilled
@unfilled
что-то типа такого, если я правильно понял. Синтаксис функций работы с датой временем нужно уточнить (с sqlite никогда не сталкивался). Если всегда нужно только за определённые сутки, date(dt) можно убрать из выборки и группировки.

select date(dt), strftime('%H', dt), max(un)
from dS
where dt between datetime('now','localtime','-24 hours') and datetime('now','localtime','-0 hours');--тут нужные сутки
group by date(dt), strftime('%H', dt)
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы