我正在尝试过滤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;
一个更简单的查询将不胜感激。有可能不需要加入吗?