Поскольку service_tracking_id
является строкой, поэтому порядок имеет алфавитный, а не числовой тип.
Вот один из способов исправить это:
SELECT STC.*,
rank() over (partition by service_id
order by length(service_tracking_id) desc, service_tracking_id desc -- might be len
) rnk
В качестве альтернативы приведите значение кдесятичное число:
SELECT STC.*,
rank() over (partition by service_id
order by cast(service_tracking_id as decimal(20, 2)) desc
) rnk