2016-07-24 4 views
0

У меня есть таблица messages(id, inserted_at)Выбор timeranges на основе даты вставки согласованного результата

Я хочу, чтобы выбрать самые последние сообщения N, чьи inserted_at столбец с скажем, 2 минуты на одного последнего сообщения.

Возможно ли это?

+0

Можете ли вы предоставить образец данных и ожидаемых результатов? – sgeddes

ответ

1

Вы можете сделать это с подразделами выбрать в пункте where:

select * 
from messages 
where inserted_at >= 
     (select max(inserted_at) - interval '90 minute' 
      from messages 
     ) 
order by inserted_at desc 
limit 2 

... и просто указать интервал по вашему выбору, и предельное значение.

Обратите внимание, что два условия (ограничение записи N, ограничение по дате) находятся в соревновании, и вы можете получить меньше записей, чем N, или же исключить некоторые сообщения, хотя они находятся в пределах даты/времени.

См SQL fiddle

Если вы имели в виду, что условие дата/время должна была быть разница во времени минимум, затем повернуть вокруг где условия от >= к <=:

select * 
from messages 
where inserted_at <= 
     (select max(inserted_at) - interval '90 minute' 
      from messages 
     ) 
order by inserted_at desc 
limit 2 
+0

Отлично, спасибо – Tarlen

Смежные вопросы