W przypadku konkretnych danych możesz wykonać:
order by (case when cat_type = 'free' then id*1.0
else 2*id - 7.5
end)
To wydaje się bardzo tajemna. Jeśli masz bardziej ogólny problem, powinieneś zadać inne pytanie, dając lepszy opis tego, co naprawdę chcesz osiągnąć.