Il risultato di un confronto in MySQL è 0 o 1 . Quindi Stock > 0 è 1 se true . E 1 e maggiore di 0 . Quindi usa
ORDER BY Stock = 0 ASC, Price DESC
o
ORDER BY Stock > 0 DESC, Price DESC
o
ORDER BY case when Stock > 0
then 1
else 2
end,
Price DESC