Как я могу получить каждые 5 минут 1 ряд в Postgres? - PullRequest
0 голосов
/ 03 июля 2018

У меня есть таблица, есть три столбца.

идентификатор, время и значение

как я могу получить ошибочный идентификатор: каждые 5 минут в Postgres только одна информация?

например:

id    time    value 

1     03:11    test
1     07:13    test
1     12:11    test
2     02:11    test
2     07:11    test

Это моя версия, но только на час ...

select
  distinct on("id")
  "id",
  time::time,
  value
from (
select
 "id",
 time::time,
 value,
dense_rank() over (
  partition by "id"
  order by
  to_char(time,'HH')::int,
  (
    to_char(time,'MI')
  )::int/5
)
from my_table
where time between '2018-07-03 00:00:00' and '2018-07-03 01:00:00' and "id" = 'XXXXX'
) as res
order by "id";

результат:

id   time  value
1     03:05   14

но результат будет 10 строк .. может быть больше

1 Ответ

0 голосов
/ 03 июля 2018

Запрос ниже даст желаемый результат.

with res(id,time,value,rnk) as (
select
 id,
 time,
 value,
dense_rank() over (
  partition by id
  order by 
  to_char(time,'HH24'),
  (
    to_char(time,'MI')
  )::int/5
)
from your_table
)
select
  distinct on(id,rnk)
  id,
  to_char(time,'HH24:MI'),
  value
from res
order by id,rnk

...