Für Ihre speziellen Daten könnten Sie Folgendes tun:
order by (case when cat_type = 'free' then id*1.0
else 2*id - 7.5
end)
Das scheint sehr arkan. Wenn Sie ein allgemeineres Problem haben, sollten Sie eine andere Frage stellen und besser beschreiben, was Sie wirklich erreichen möchten.