Hive 查询以获取特定列值位于特定百分位的所有行

数据挖掘 蜂巢
2022-02-25 23:50:14

我正在尝试过滤id_counts基于百分位值命名的配置单元表中的行。让我们考虑下表。

+------+----------+
|  id  | quantity |
+------+----------+
| a01  |      234 |
| a02  |      345 |
| a03  |       23 |
+------+----------+

现在假设我想获取数量在第 90 个百分位的行,那么我应该给出什么查询。我尝试了以下方法:

select * from id_counts having quantity>=  percentile(quantity, 0.9);  

但它给出了错误: FAILED: SemanticException [Error 10025]: Line 1:54 Expression not in GROUP BY key '0.9'

更新:我可以使用以下查询解决此问题,但有更简单的方法吗?

select * from id_count a cross join
    (select percentile(quantity, 0.9) as top_ones
     from id_count) aa
where a.quantity >= aa.top_ones;

一个更简单的查询将不胜感激。有可能不需要加入吗?

0个回答
没有发现任何回复~