Plsql 如何通过某个取整因子进行取整?

Plsql 如何通过某个取整因子进行取整?,plsql,oracle11g,Plsql,Oracle11g,我的取整系数是0.8 如何在Oracle存储过程计算中实现这一点?从您给出的最少示例来看,您希望使用调整后的值ceil(): If x = 1.71 Then output = 1 If x = 1.82 Then output = 2 在CTE中使用一些示例值进行演示: ceil(x - 0.8) 从您给出的最少示例中,您希望使用调整后的值ceil(): If x = 1.71 Then output = 1 If x = 1.82 Then output = 2 在CTE中使用一些示例

我的取整系数是
0.8


如何在Oracle存储过程计算中实现这一点?

从您给出的最少示例来看,您希望使用调整后的值
ceil()

If x = 1.71 Then output = 1
If x = 1.82 Then output = 2
在CTE中使用一些示例值进行演示:

ceil(x - 0.8)

从您给出的最少示例中,您希望使用调整后的值
ceil()

If x = 1.71 Then output = 1
If x = 1.82 Then output = 2
在CTE中使用一些示例值进行演示:

ceil(x - 0.8)

使用
四舍五入
.5
的偏移量。因此,对于
0.8
的系数,然后
0.5=0.8-0.3
从值中四舍五入减去
0.3

Oracle 11g R2架构设置

y := ceil(x - 0.8);
CREATE TABLE table_name ( value ) AS
  SELECT +1.71 FROM DUAL UNION ALL
  SELECT +1.80 FROM DUAL UNION ALL
  SELECT +1.81 FROM DUAL UNION ALL
  SELECT -1.19 FROM DUAL UNION ALL
  SELECT -1.20 FROM DUAL;
SELECT value,
       ROUND( value - 0.3 ) AS rounded_value
FROM   table_name
| VALUE | ROUNDED_VALUE |
|-------|---------------|
|  1.71 |             1 |
|   1.8 |             2 |
|  1.81 |             2 |
| -1.19 |            -1 |
|  -1.2 |            -2 |
SELECT value,
       ROUND( value - 0.3 ) AS rounded_value,
       CEIL( value - 0.8 ) AS ceiling_value,
       FLOOR( value + 0.2 ) AS floored_value
FROM   table_name
查询1

y := ceil(x - 0.8);
CREATE TABLE table_name ( value ) AS
  SELECT +1.71 FROM DUAL UNION ALL
  SELECT +1.80 FROM DUAL UNION ALL
  SELECT +1.81 FROM DUAL UNION ALL
  SELECT -1.19 FROM DUAL UNION ALL
  SELECT -1.20 FROM DUAL;
SELECT value,
       ROUND( value - 0.3 ) AS rounded_value
FROM   table_name
| VALUE | ROUNDED_VALUE |
|-------|---------------|
|  1.71 |             1 |
|   1.8 |             2 |
|  1.81 |             2 |
| -1.19 |            -1 |
|  -1.2 |            -2 |
SELECT value,
       ROUND( value - 0.3 ) AS rounded_value,
       CEIL( value - 0.8 ) AS ceiling_value,
       FLOOR( value + 0.2 ) AS floored_value
FROM   table_name

y := ceil(x - 0.8);
CREATE TABLE table_name ( value ) AS
  SELECT +1.71 FROM DUAL UNION ALL
  SELECT +1.80 FROM DUAL UNION ALL
  SELECT +1.81 FROM DUAL UNION ALL
  SELECT -1.19 FROM DUAL UNION ALL
  SELECT -1.20 FROM DUAL;
SELECT value,
       ROUND( value - 0.3 ) AS rounded_value
FROM   table_name
| VALUE | ROUNDED_VALUE |
|-------|---------------|
|  1.71 |             1 |
|   1.8 |             2 |
|  1.81 |             2 |
| -1.19 |            -1 |
|  -1.2 |            -2 |
SELECT value,
       ROUND( value - 0.3 ) AS rounded_value,
       CEIL( value - 0.8 ) AS ceiling_value,
       FLOOR( value + 0.2 ) AS floored_value
FROM   table_name

根据您希望如何处理舍入系数边界处的值,有不同的方法使用
ROUND
FLOOR
CEIL
在边界值处给出不同的结果:

  • 舍入(值-0.3)
    将舍入远离0的边界处的值,因此将向上舍入正值,向下舍入负值
  • CEIL(值-0.8)
    将向下舍入边界处的值
  • FLOOR(值+0.2)
    将向上舍入边界处的值

查询2

y := ceil(x - 0.8);
CREATE TABLE table_name ( value ) AS
  SELECT +1.71 FROM DUAL UNION ALL
  SELECT +1.80 FROM DUAL UNION ALL
  SELECT +1.81 FROM DUAL UNION ALL
  SELECT -1.19 FROM DUAL UNION ALL
  SELECT -1.20 FROM DUAL;
SELECT value,
       ROUND( value - 0.3 ) AS rounded_value
FROM   table_name
| VALUE | ROUNDED_VALUE |
|-------|---------------|
|  1.71 |             1 |
|   1.8 |             2 |
|  1.81 |             2 |
| -1.19 |            -1 |
|  -1.2 |            -2 |
SELECT value,
       ROUND( value - 0.3 ) AS rounded_value,
       CEIL( value - 0.8 ) AS ceiling_value,
       FLOOR( value + 0.2 ) AS floored_value
FROM   table_name

y := ceil(x - 0.8);
CREATE TABLE table_name ( value ) AS
  SELECT +1.71 FROM DUAL UNION ALL
  SELECT +1.80 FROM DUAL UNION ALL
  SELECT +1.81 FROM DUAL UNION ALL
  SELECT -1.19 FROM DUAL UNION ALL
  SELECT -1.20 FROM DUAL;
SELECT value,
       ROUND( value - 0.3 ) AS rounded_value
FROM   table_name
| VALUE | ROUNDED_VALUE |
|-------|---------------|
|  1.71 |             1 |
|   1.8 |             2 |
|  1.81 |             2 |
| -1.19 |            -1 |
|  -1.2 |            -2 |
SELECT value,
       ROUND( value - 0.3 ) AS rounded_value,
       CEIL( value - 0.8 ) AS ceiling_value,
       FLOOR( value + 0.2 ) AS floored_value
FROM   table_name

使用
四舍五入
.5
的偏移量。因此,对于
0.8
的系数,然后
0.5=0.8-0.3
从值中四舍五入减去
0.3

Oracle 11g R2架构设置

y := ceil(x - 0.8);
CREATE TABLE table_name ( value ) AS
  SELECT +1.71 FROM DUAL UNION ALL
  SELECT +1.80 FROM DUAL UNION ALL
  SELECT +1.81 FROM DUAL UNION ALL
  SELECT -1.19 FROM DUAL UNION ALL
  SELECT -1.20 FROM DUAL;
SELECT value,
       ROUND( value - 0.3 ) AS rounded_value
FROM   table_name
| VALUE | ROUNDED_VALUE |
|-------|---------------|
|  1.71 |             1 |
|   1.8 |             2 |
|  1.81 |             2 |
| -1.19 |            -1 |
|  -1.2 |            -2 |
SELECT value,
       ROUND( value - 0.3 ) AS rounded_value,
       CEIL( value - 0.8 ) AS ceiling_value,
       FLOOR( value + 0.2 ) AS floored_value
FROM   table_name
查询1

y := ceil(x - 0.8);
CREATE TABLE table_name ( value ) AS
  SELECT +1.71 FROM DUAL UNION ALL
  SELECT +1.80 FROM DUAL UNION ALL
  SELECT +1.81 FROM DUAL UNION ALL
  SELECT -1.19 FROM DUAL UNION ALL
  SELECT -1.20 FROM DUAL;
SELECT value,
       ROUND( value - 0.3 ) AS rounded_value
FROM   table_name
| VALUE | ROUNDED_VALUE |
|-------|---------------|
|  1.71 |             1 |
|   1.8 |             2 |
|  1.81 |             2 |
| -1.19 |            -1 |
|  -1.2 |            -2 |
SELECT value,
       ROUND( value - 0.3 ) AS rounded_value,
       CEIL( value - 0.8 ) AS ceiling_value,
       FLOOR( value + 0.2 ) AS floored_value
FROM   table_name

y := ceil(x - 0.8);
CREATE TABLE table_name ( value ) AS
  SELECT +1.71 FROM DUAL UNION ALL
  SELECT +1.80 FROM DUAL UNION ALL
  SELECT +1.81 FROM DUAL UNION ALL
  SELECT -1.19 FROM DUAL UNION ALL
  SELECT -1.20 FROM DUAL;
SELECT value,
       ROUND( value - 0.3 ) AS rounded_value
FROM   table_name
| VALUE | ROUNDED_VALUE |
|-------|---------------|
|  1.71 |             1 |
|   1.8 |             2 |
|  1.81 |             2 |
| -1.19 |            -1 |
|  -1.2 |            -2 |
SELECT value,
       ROUND( value - 0.3 ) AS rounded_value,
       CEIL( value - 0.8 ) AS ceiling_value,
       FLOOR( value + 0.2 ) AS floored_value
FROM   table_name

根据您希望如何处理舍入系数边界处的值,有不同的方法使用
ROUND
FLOOR
CEIL
在边界值处给出不同的结果:

  • 舍入(值-0.3)
    将舍入远离0的边界处的值,因此将向上舍入正值,向下舍入负值
  • CEIL(值-0.8)
    将向下舍入边界处的值
  • FLOOR(值+0.2)
    将向上舍入边界处的值

查询2

y := ceil(x - 0.8);
CREATE TABLE table_name ( value ) AS
  SELECT +1.71 FROM DUAL UNION ALL
  SELECT +1.80 FROM DUAL UNION ALL
  SELECT +1.81 FROM DUAL UNION ALL
  SELECT -1.19 FROM DUAL UNION ALL
  SELECT -1.20 FROM DUAL;
SELECT value,
       ROUND( value - 0.3 ) AS rounded_value
FROM   table_name
| VALUE | ROUNDED_VALUE |
|-------|---------------|
|  1.71 |             1 |
|   1.8 |             2 |
|  1.81 |             2 |
| -1.19 |            -1 |
|  -1.2 |            -2 |
SELECT value,
       ROUND( value - 0.3 ) AS rounded_value,
       CEIL( value - 0.8 ) AS ceiling_value,
       FLOOR( value + 0.2 ) AS floored_value
FROM   table_name

y := ceil(x - 0.8);
CREATE TABLE table_name ( value ) AS
  SELECT +1.71 FROM DUAL UNION ALL
  SELECT +1.80 FROM DUAL UNION ALL
  SELECT +1.81 FROM DUAL UNION ALL
  SELECT -1.19 FROM DUAL UNION ALL
  SELECT -1.20 FROM DUAL;
SELECT value,
       ROUND( value - 0.3 ) AS rounded_value
FROM   table_name
| VALUE | ROUNDED_VALUE |
|-------|---------------|
|  1.71 |             1 |
|   1.8 |             2 |
|  1.81 |             2 |
| -1.19 |            -1 |
|  -1.2 |            -2 |
SELECT value,
       ROUND( value - 0.3 ) AS rounded_value,
       CEIL( value - 0.8 ) AS ceiling_value,
       FLOOR( value + 0.2 ) AS floored_value
FROM   table_name

你能再举几个例子吗;1.80应该是1还是2?1.8应该是2。如果十进制值为0.8或以上,则会考虑上限值。您能否再举一些例子;1.80应该是1还是2?1.8应该是2。如果十进制值为0.8或以上,将考虑上限值。