Oracle中,查找大于一组数字的80%的数字
假设我在 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
听起来您想使用 PERCENTILE_DISC 函数如果您想要集合中的实际值,或 PERCENTILE_CONT< /a> 如果您想要特定百分位数的插值,例如 80%:
编辑
如果您使用 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%:
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).
我认为你可以使用 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.