zoukankan      html  css  js  c++  java
  • ratio_to_report分析函数求占比

    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;

    试想下假设我们没有这个分析函数,实现就有可能如下:

     select name,score,
      (score/sum(score) over())   as "占所有科目的百分比",
      (score/sum(score) over(partition by kemu))   as "占所有科目的百分比"
     from test
     group by name,score,kemu
     order by 2;

    嘿嘿,还是没有那个方便,估计效率也不咋的。

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

     2. site:download.oracle.com ratio_to_report 搜索oracle官方文档

  • 相关阅读:
    Activity 之使用
    Activity 之生命周期
    Activity 关于生命周期一些问题的实践验证
    深入理解Java虚拟机-第1章-走进Java-读书笔记
    代码整洁之道-第11章-系统-读书笔记
    代码整洁之道-第10章-类-读书笔记
    代码整洁之道-第9章-单元测试-读书笔记
    代码整洁之道-第8章-边界-读书笔记
    代码整洁之道-第7章-错误处理-读书笔记
    华为交换机做端口流量统计
  • 原文地址:https://www.cnblogs.com/likeju/p/5092318.html
Copyright © 2011-2022 走看看