Um método usa
row_number()
:select t.*
from (select t.*,
row_number() over (partition by orderid
order by instr('LOW,MEDIUM,HIGH', status) as seqnum
from transaction t
) t
where seqnum = 1;
instr()
é apenas uma maneira conveniente de atribuir uma ordenação a strings. Ele retorna a posição do status no primeiro argumento, o que é conveniente para fins de classificação neste caso.