уровень вовлеченности за месяц - PullRequest
0 голосов
/ 29 октября 2019

Я пытаюсь написать запрос, который оценивает степень вовлеченности клиента по децилям в течение месяца по отношению ко всем другим клиентам.

Я пытался:

        ntile(10) over (partition by rec_month order by engagement_rate) as decile

, но я не думаю, что это дает мне то, что мне нужно. Похоже, что просто разделяет Vhosts на 10 групп одинакового размера. Я хочу процентили.

Я также пытался:

        ntile(10) over (partition by rec_month, vhost order by engagement_rate) as decile

Но это только расчет в рамках клиента (vhost) в течение месяца.

Как рассчитать дециль engagement_rate для всех других клиентов (Vhosts) в течение месяца?

1 Ответ

0 голосов
/ 29 октября 2019

Сначала я подозреваю, что у вас есть функция ранга, например 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 вместо усечения процента. Раунд только для того, чтобы сделать ответы выше менее подробными.

...