oracle 求占百分比的分析函数 ratio_to_report() over();


drop table test;
  create table test
  (
  name varchar(20),
  kemu varchar(20),
  score number
  );
  insert into test values('testa','yuwen',10);
  insert into test values('testa','英语',100);
  insert into test values('testb','yuwen',60);
  insert into test values('testb','yuwen',120);
  insert into test values('testc','yuwen',40);
  select name,
    score,
    ratio_to_report(score) over() as  "占所有科目的百分比",
  ratio_to_report(score) over(partition by kemu) as  "占各科目的百分比"

  from test ;
 
NAME                                          SCORE 占所有科目的百分比 占各科目的百分比
-------------------- ---------- ------------------ ----------------
testa                                              10                  .03030303            .043478261
testb                                              60                .181818182            .260869565
testc                                              40                .121212121            .173913043
testb                                            120                .363636364              .52173913
testa                                            100                .303030303                              1

 

drop table test;


ratio_to_report(a)函数用法


Ratio_to_report() 括号中就是分子,


over() 括号中就是分母 分母缺省就是整个占比


总结:1. 有了ratio_to_report分析函数,我们避免了还需要写分析函数,自己相除的写法,SQL简单实现了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值