oracle ratio_to_report,Oracle RATIO_TO_REPORT

除报告详细数据外,许多报告中还包括每行总数的百分比。例如,每名客户的订单相对于总订单的百分比,或每位销售代表的销售额相对于总销售额的百分比。

传统上,Oracle计算百分比的方法是在总计报告的子查询中使用SUM函数总计报告,然后把那个结果放到细节表中相除来计算百分比。你还可以用一个子查询作为SELECT语句表达式:

RATIO_TO_REPORT解析函数使得这种类型的查询更容易编码。Oracle 8i中引入了这个函数,它的格式如下:

RATIO_TO_REPORT (expr) OVER (query_partition_clause)

PARTITION BY customer_id子句重新安排每位客户的总数,进而说明每名客户的哪次订单最为关键。你可以查看客户102的情况,他的两个订单相对平衡;但客户103的一个订单占这名客户总订单额的很大一部分。

SELECT

sales_rep_id, customer_id, order_total,

ratio_to_report(order_total) OVER () pct_total

FROM

orders

WHERE

sales_rep_id = 163

ORDER BY

sales_rep_id, customer_id, order_id

/

SQL> @ratioreport_a

SALES_REP_ID CUSTOMER_ID ORDER_TOTAL  PCT_TOTAL

------------ ----------- ----------- ----------

163         102      5610.6 .043747539

163         102       10523 .082051002

163         103          78  .00060819

163         103       13550 .105653433

163         105      1926.6 .015022281

163         106      5546.6 .043248512

163         117      3878.4 .030241054

163         147      1500.8  .01170219

163         149        9055 .070604564

163         156       68501  .53412294

163         157      7110.3 .055441152

163         160       969.2 .007557144

12 rows selected.

Oracle解析可帮助你节省编码时间,并在执行过程中生成更加有效的查询。

来源:开发者在线

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值