Impala从其他分位数计算分位数

时间:2016-09-28 19:21:17

标签: sql impala

作为一个例子,假设我们有表:

name | val
-----------
Alice| 1
Bob  | 2

我可以通过

获得上述值的分位数
SELECT *, NTILE(2) over (ORDER BY val ASC) AS quantile FROM table

给出:

name | val | quantile |
-----------|----------|
Alice| 1   |     1
Bob  | 2   |     2    

假设我现在有一张更大的桌子

name | val
-----------
Alice| 1
Bob  | 2
Joe  | 1.8

我想计算Joe 相对于前一个分位数的分位数。换句话说,我之前的分位数分为"< 1.5"和"> = 1.5",所以我应该看到:

name | val | quantile |
-----------|----------|
Alice| 1   |    1     |
Bob  | 2   |    2     |
Joe  | 1.8 |    2     |

是否有一种简单的方法可以使用 Impala 执行此操作,其方式是将NTILE(n)推广为任意n?理论上,我可以从先前的分位数找到每个分位数水平的最小值和最大值(假设为简单起来是连续的),但这非常繁琐。

0 个答案:

没有答案