Выберите строку для каждых 15 минут в sql - PullRequest
0 голосов
/ 14 июля 2020
 DataType 

      SamplingTime  : Datetime
      Value         : Integer



  SamplingTime          Value
2020-06-08 00:03:58.000 ,  1.00
2020-06-08 00:03:59.000 ,  5.00
2020-06-08 00:02:00.000 ,  3.00
2020-06-08 00:01:58.000 ,  1.00
2020-06-08 00:01:44.000 ,  6.00
2020-06-08 00:01:20.000 ,  2.00

Я хочу, чтобы вывод получал ROW с интервалом 15 минут, фильтр в данных должен выдавать

Пример вывода

2020-06-08 00:03:58.000 ,  1.00
2020-06-08 00:02:00.000 ,  3.00
2020-06-08 00:01:44.000 ,  6.00
2020-06-08 00:01:20.000 ,  2.00

Запрос, который Я пробовал для этого:

select dateadd(MINUTE,datediff(MINUTE,-15,SamplingTime),15), value 
from RN_QOS_DATA_0001 

Этот набор строк содержит информацию для набора данных:

Этот набор строк содержит информацию для набора данных

1 Ответ

0 голосов
/ 21 июля 2020

Ищете самую раннюю строку в пределах каждого пятнадцатиминутного деления часов?

with data as (
    select *,
        row_number() over (partition by dateadd(second, -1 * (
                               /* how many seconds into 15-minute window */
                               60 * datepart(minute, SamplingTime) % 15
                                  + datepart(second, SamplingTime)
                               ), SamplingTime)
                           order by SamplingTime
        ) as rn
    from T
)
select * from data where rn = 1;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...