如何解决PL / SQL中80%的规则估计值
| 假设在架构表中插入了一系列值,并且在本月底我想申请这些记录(即2500行=数值),算法是:对降序排列的值(从最小到最大)进行排序,然后找到排序列的80%的值。 在我的示例中,如果每行从1开始增加一,则80%的值将是2000行=值(= 2500-2500 * 20/100)。此算法需要在行数不是恒定的过程中实施,例如,它每月可能变化2500至1,000,000解决方法
使用percentile_disc函数编写查询以解决您的问题。听起来像是您想要的。
一个例子是
select percentile_disc(0.8) within group (order by the_value)
from my_table
,提示:您可以使用Oracle的累积聚合函数来实现。例如,假设您的表如下所示:
MY_TABLE
+ ----- + ---------- +
| ID |数量|
+ ----- + ---------- +
| A | 1 |
| B | 2 |
| C | 3 |
| D | 4 |
| E | 5 |
| F | 6 |
| G | 7 |
| H | 8 |
|我9 |
| J | 10 |
+ ----- + ---------- +
在每一行,您都可以使用以下方法求和:
SELECT
id,quantity,SUM(quantity)
OVER (ORDER BY quantity ROWS UNBOUNDED PRECEDING)
AS cumulative_quantity_so_far
FROM
MY_TABLE
给你:
+ ----- + ---------- + ---------------------------- +
| ID |数量| CUMULATIVE_QUANTITY_SO_FAR |
+ ----- + ---------- + ---------------------------- +
| A | 1 | 1 |
| B | 2 | 3 |
| C | 3 | 6 |
| D | 4 | 10 |
| E | 5 | 15 |
| F | 6 | 21 |
| G | 7 | 28 |
| H | 8 | 36 |
|我9 | 45 |
| J | 10 | 55 |
+ ----- + ---------- + ---------------------------- +
希望这对您的工作有所帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。