Расчеты и классификации квартилей — PrestoDB

#presto

Вопрос:

Я выполняю запрос для классификации цены по 4 квартилям. Я не экспрессирован в Престо, поэтому мне интересно, почему это происходит:

В чем проблема:

  1. Когда все кварти имеют одинаковое значение(потому что существует только одна цена), иногда продавец классифицируется как 1-й квартал, а другой продавец (та же цена) классифицируется как 2-й квартал

2.Иногда значение меньше расчетного квартиля, но цена классифицируется как этот квартиль. пример: цена 51,09 классифицирована как 4-й квартал, а рассчитанный 4-й квартал равен 53

 with cte as ( select
                     purchase_date, created_at, odin , seller_id, gmv
                            from table
                            where date(purchase_date) >= (cast(current_date as date) - interval '12' day)
                            group by purchase_date,created_at, odin, seller_id, gmv),

  quartiles as (select

                     odin,
                     approx_percentile(gmv, 0.25) AS "1_quartile",
                     approx_percentile(gmv, 0.5)  AS "2_quartile",
                     approx_percentile(gmv, 0.75) AS "3_quartile",
                     approx_percentile(gmv, 1)    AS "4_quartile"

  from cte
  group by odin

  )

select cte.purchase_date, cte.created_at, cte.seller_id, cte.gmv,
       ntile(4) over (partition by cte.odin order by gmv asc) quartile, quartiles.*
from cte
inner join quartiles on cte.odin = quartiles.odin