全部产品

RATIO_TO_REPORT

更新时间:2020-03-23 20:04:51

RATIO_TO_REPORT 函数计算一个值与一组值之和的比率。

语法

  1. RATIO_TO_REPORT(expr) OVER ([query_partition_clause])

作为分析函数使用,您需要使用窗口函数的完整语法,它对一组行的集合进行计算并返回多个值,具体信息请查阅文档 OVER (analytic_clause)

参数

参数 说明
expr 只能为正常数。
OVER 使用 OVER 子句定义窗口进行计算。

返回类型

返回 NUMBERFLOATBINARY_FLOATBINARY_DOUBLE 数值型数据。

示例

根据部分展示员工产出占部门总展出的比例。建表 product,并向里面插入数据,执行以下语句:

  1. CREATE TABLE product (name VARCHAR(8), deptno NUMBER, output NUMBER);
  2. INSERT INTO product VALUES('Linda',100,5050);
  3. INSERT INTO product VALUES('Tan',1001,8500);
  4. INSERT INTO product VALUES('Tom',1001,3900);
  5. INSERT INTO product VALUES('John',100,29500);
  6. INSERT INTO product VALUES('Mery',1001,1500);
  7. INSERT INTO product VALUES('Peter',100,1060);
  8. COMMIT;

执行以下语句:

  1. SELECT name, OUTPUT, deptno, RATIO_TO_REPORT(output) OVER (partition BY deptno) FROM product;

查询结果如下:

  1. +-------+--------+--------+------------------------------------------------+
  2. | NAME | OUTPUT | DEPTNO | RATIO_TO_REPORT(OUTPUT)OVER(PARTITIONBYDEPTNO) |
  3. +-------+--------+--------+------------------------------------------------+
  4. | Linda | 5050 | 100 | .1418140971637180567256388654872226902555 |
  5. | John | 29500 | 100 | .8284189834316203313675933726481325470373 |
  6. | Peter | 1060 | 100 | .0297669194046616119067677618646447627071 |
  7. | Tan | 8500 | 1001 | .6115107913669064748201438848920863309353 |
  8. | Tom | 3900 | 1001 | .2805755395683453237410071942446043165468 |
  9. | Mery | 1500 | 1001 | .107913669064748201438848920863309352518 |
  10. +-------+--------+--------+------------------------------------------------+