Oracle中,查找大于一组数字的80%的数字

发布于 2024-10-04 03:17:22 字数 126 浏览 1 评论 0原文

假设我在 Oracle 中有一个包含整数列的表。有大量的行;数以百万计的某个地方。我想编写一个查询,返回一个大于表中所有数字 80% 的整数。解决这个问题的最佳方法是什么?

如果重要的话,这是 Oracle 10g r1。

Assume I have a table with a column of integers in Oracle. There are a good amount of rows; somewhere in the millions. I want to write a query that gives me back an integer that is larger than 80% of all of the numbers in table. What is the best way to approach this?

If it matters, this is Oracle 10g r1.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

对你的占有欲 2024-10-11 03:17:22

听起来您想使用 PERCENTILE_DISC 函数如果您想要集合中的实际值,或 PERCENTILE_CONT< /a> 如果您想要特定百分位数的插值,例如 80%:

SELECT PERCENTILE_DISC(0.8) 
WITHIN GROUP(ORDER BY integer_col ASC) 
FROM some_table

编辑

如果您使用 PERCENTILE_DISC,它将返回数据集中的实际值,因此如果您想要更大的值,您可以想要将其增加 1(对于整数列)。

Sounds like you want to use the PERCENTILE_DISC function if you want an actual value from the set, or PERCENTILE_CONT if you want an interpolated value for a particular percentile, say 80%:

SELECT PERCENTILE_DISC(0.8) 
WITHIN GROUP(ORDER BY integer_col ASC) 
FROM some_table

EDIT

If you use PERCENTILE_DISC, it will return an actual value from the dataset, so if you wanted a larger value, you'd want to increment that by 1 (for an integer column).

贱贱哒 2024-10-11 03:17:22

我认为你可以使用 NTILE函数将输入分为 5 个桶,然后从顶部桶中选择 MIN(Column)。

I think you could use the NTILE function to divide the input into 5 buckets, then select the MIN(Column) from the top bucket.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文