Сначала я подозреваю, что у вас есть функция ранга, например DENSE_RANK или RANK (что редко, если я буду использовать), а затем поверните это в процент, разделивпутем подсчета (*) и затем усечения в децили на (trunc(V/10)*10)
, но тогда я подозреваю, что вам может потребоваться вывод функции PERCENT_RANK , но пример документации по снежинке не так ясен, как я надеюсь,знать, что это решает вашу проблему.
select column1,
column2,
round(percent_rank() over (order by column2),3) as p_rank,
trunc(p_rank*10)*10 as decile
from values ('a',1),('b',2),('c',3),('d',4),('e',5),('f',6),('g',7);
дает
COLUMN1 COLUMN2 P_RANK DECILE
a 1 0 0
b 2 0.167 10
c 3 0.333 30
d 4 0.5 50
e 5 0.667 60
f 6 0.833 80
g 7 1 100
, но, возможно, вы захотите использовать ntile вместо усечения процента. Раунд только для того, чтобы сделать ответы выше менее подробными.