If you want to get the exact value of the 90th percentile, except for NULL, I would suggest doing the calculation directly. The next version calculates the line number and the number of lines and selects the appropriate value:
select max(case when rownum*1.0/numrows <= 0.9 then colA end) as percentile_90th
from (select colA,
row_number() over (order by colA) as rownum,
count(*) over (partition by NULL) as numrows
from t
where colA is not null
) t
SELECT, WHERE, 50- , 17- , .