每月参与度的雪花小巧

问题描述 投票:0回答:1

我正在尝试编写一个查询,该查询按月对所有其他客户按十分位数进行排名。

我尝试过:

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

但是我不认为这能帮到我所需的东西。似乎只是将虚拟主机分成10个大小相等的组。我想要百分位。

我也尝试过:

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

但是那只是在一个月内在客户(vhost)中进行计算。

我如何计算一个月内所有其他客户(虚拟主机)的投入率十分位数?

sql snowflake-data-warehouse percentile
1个回答
0
投票

[起初,我怀疑您是排名函数,例如DENSE_RANKRANK(稀疏,我要使用on),然后将其除以count(*),然后将其截断为百分比用(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而不是截断百分比。回合正是为了使上面的答案不再那么冗长。

© www.soinside.com 2019 - 2024. All rights reserved.