Pour vos données particulières, vous pouvez faire :
order by (case when cat_type = 'free' then id*1.0
else 2*id - 7.5
end)
Cela semble très ésotérique. Si vous avez un problème plus général, vous devriez poser une autre question, en donnant une meilleure description de ce que vous voulez vraiment accomplir.