To powinno działać. Czy próbowałeś wyświetlić to, co generuje Twój CAST (wiersz AS DECIMAL)?
Wklej przykładowe dane, które próbujesz posortować. Może masz tam wartości null lub liczby, które nie mieszczą się w typie dziesiętnym.
Jakiej wersji mysql używasz? Może powód jest taki (z pomocy mysql):