计算雪花的十分位间隔

时间:2018-07-31 15:35:34

标签: sql snowflake

我有一个相对简单(希望如此)的Snowflake SQL问题,但我自己无法在线上回答。为了简单起见,我们只说一个简单的表,其中包含一个ID列和一个value列。

   Id |   Value
-------------------
  A   |  100 | 
  B   |  245 | 
  C   |  80  | 
  D   |  370 | 
  E   |  65  | 

我想计算value列的十分位桶。到目前为止,我只发现了将十进制等级添加为附加列的命令,每个值的排名介于0-9之间。但这不是我所需要的。我对查看这些十进制实际上是什么更感兴趣。例如,对于十分位数0,我想知道跨度的时间间隔,例如,看起来像[0,99)。有人知道如何生成此数据吗?谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用聚合:

select tile, min(value), max(value)
from (select t.*, ntile(10) over (order by value) as tile
      from t
     ) t
group by tile
order by tile;

请注意,ntile()可能无法按照您期望的方式处理联系。但是关键是,如果您可以在另一列中获得逻辑,则聚合将获得所需的范围。