Как проверить последовательность значений столбца (на основе временных меток) в каждой группе в SQL?

У меня есть colA, colB, colC в tableA, где colC - переменная отметки времени.

есть 5 возможных значений для colB.

select distinct(colB) from tableA; 

x
y
z

Я хочу убедиться, что для каждого значения colA записи с colB = 'a' имеют более ранние временные метки, чем записи с colB = 'b' и так далее. Итак, записи colB = 'b' должны идти после colB = 'a', а записи colB = 'c' должны идти после colB = 'b' для каждого значения colA.

Мне нужен SQL-запрос для того же


person Arighna    schedule 12.03.2018    source источник
comment
почему бы тебе лучше не написать несколько примеров данных? Я вижу уникальный пример, когда вы говорите, что существует 5 возможных значений для colB, всего с 3 различными значениями x, y, z. Так сложно помочь с этой информацией.   -  person Jaime Drq    schedule 12.03.2018
comment
Также см. минимальный воспроизводимый пример.   -  person clinomaniac    schedule 12.03.2018
comment
А как вы хотите, чтобы результаты выглядели?   -  person Gordon Linoff    schedule 12.03.2018
comment
правильно указал. Это ошибка. Я составил запрос и сценарий. Я не мог поделиться фактическими данными, которые заставили меня сделать это.   -  person Arighna    schedule 12.03.2018


Ответы (1)


Если я правильно понял, можно использовать group by и having:

select cola
from tableA
group by cola
having max(case when colb = 'a' then timestamp end) < min(case when colb = 'b' then timestamp end) and
       max(case when colb = 'b' then timestamp end) < min(case when colb = 'c' then timestamp end) and
      . . .
person Gordon Linoff    schedule 12.03.2018
comment
Именно то, что я хотел - person Arighna; 12.03.2018