gpt4 book ai didi

sql - 如何克服 `PERCENTILE_CONT` 参数应为常量的限制?

转载 作者:行者123 更新时间:2023-12-05 07:54:07 36 4
gpt4 key购买 nike

我想找到将输入集 ADS.PREDICTOR 分成同样大的组的 POINTCOUNT 值。参数 POINTCOUNT 对于不同的预测变量可以有不同的值,所以我不想在代码中对其进行硬编码。

不幸的是,下面的代码因 ORA-30496: Argument should be a constant 而失败...我该如何克服这个问题(当然,除了 300 行带有硬编码阈值分位数的代码) ?

define POINTCOUNT=300;
select
*
from (
select
percentile_disc(MYQUNTILE)
within group (
order by PREDICTOR ) as THRESHOLD
from ADS
inner join (
select (LEVEL - 1)/(&POINTCOUNT-1) as MYQUANTILE
from dual
connect by LEVEL <= &POINTCOUNT
)
on 1=1
)
group by THRESHOLD

我想画一条ROC曲线。曲线将在 Excel 中绘制为在 Oracle 中计算的点对 (X, Y) 之间的线性插值。

每个点 (X, Y) 都是使用阈值计算的。

如果每个相邻的 (X, Y) 对之间的距离是均匀的,我将获得给定数量的点对的 ROC 曲线的最佳近似值。

如果我将预测值的域分成 N 个值,将第 1/N 个分位数分开,我应该得到一组相当好的阈值。

最佳答案

PERCENTILE_CONT() 仅要求百分位值在每个组内 保持不变。您的子查询中没有 group by,所以我认为这可能会解决您的问题:

select MYQUANTILE,
percentile_disc(MYQUANTILE) within group (order by PREDICTOR
) as THRESHOLD
from ADS cross join
(select (LEVEL - 1)/(&POINTCOUNT-1) as MYQUANTILE
from dual
connect by LEVEL <= &POINTCOUNT
)
GROUP BY MYQUANTILE;

另外,请注意 CROSS JOININNER JOIN 相同。 . . ON 1=1.

关于sql - 如何克服 `PERCENTILE_CONT` 参数应为常量的限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31699663/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com