Как получить изменения в столбце и первое появление идентификатора - PullRequest
0 голосов
/ 14 октября 2019

Таблица

Из таблицы на изображении я хочу выбрать первый раз, когда появляется DEVID, и каждый раз, когда изменяется сенсорный тип DEVID. Так что все желтые ряды. Я нашел отдельные SQL-запросы, чтобы получить эти результаты, может кто-нибудь помочь объединить их.

Первый результат DEVID ->

 select * from
    (select *, row_number() over 
         (partition by devid order by MSGID ASC) as TopOne from RAWDATA
    ) T
where T.TopOne = 1;

изменить SENSORTYPE of DEVID ->

SELECT a.*
FROM rawdata AS a
WHERE a.SENSORTYPE <>
      ( SELECT b.SENSORTYPE
        FROM rawdata AS b
        WHERE b.DEVID = a.DEVID
          AND a.MSGID > b.MSGID
        ORDER BY b.MSGID DESC
        LIMIT 1);

Ответы [ 2 ]

0 голосов
/ 14 октября 2019

Попробуйте плотность_ранка функция

select r.*
from (select r.*,
             dense_rank(sensortype) over (partition by devid order by id) as top_sensortype
      from rawdata r
     ) r
where top_sensortype=1
0 голосов
/ 14 октября 2019

Вы, кажется, хотите lag():

select r.*
from (select r.*,
             lag(sensortype) over (partition by devid order by id) as prev_sensortype
      from rawdata r
     ) r
where prev_sensortype is null or prev_sensortype <> sensortype;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...