我在Oracle中有一条查询生成离散百分位数:
...
PERCENTILE_DISC(0.9999) WITHIN GROUP(ORDER BY DURATION_COUNT) as PERCENTILE_9999_QTY,
...
PERCENTILE_9999_QTY
的数据类型为Number(8)
。
它工作正常,但在某些情况下我收到此错误:
ORA-01438:大于此指定精度的值 柱
我不想更改Number(8)
数据类型。有没有办法确保该值符合Number(8)
精度?
答案 0 :(得分:2)
如果结果不适合您的N(8)列,那么除了(a)引发异常,或(b)改为其他内容之外,您无能为力:
SELECT ...
CASE
WHEN PERCENTILE_DISC(0.9999)
WITHIN GROUP(ORDER BY DURATION_COUNT)
< 100000000
THEN PERCENTILE_DISC(0.9999)
WITHIN GROUP(ORDER BY DURATION_COUNT)
ELSE NULL
END as PERCENTILE_9999_QTY,
...
答案 1 :(得分:1)
此函数将任何参数作为参数 numeric数据类型或任何非数字 可以隐式的数据类型 转换为数字数据类型。的的 函数返回与...相同的数据类型 参数的数值数据类型。
如果要将Number(8)作为输出,则必须在适合NUMBER(8)的数据集上执行此功能。