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 | + ----- + ---------- + ---------------------------- + 希望这对您的工作有所帮助。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...