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官方文档

  • 相关阅读:
    将node.js代码放到阿里云上,并启动提供外部接口供其访问
    Linux内核深度解析之内核互斥技术——读写信号量
    man 1 2 3 4...
    Android Sepolicy 相关工具
    selinux misc
    ext4 mount options
    tune2fs cmd(ext fs)
    /dev/tty node
    kernel misc
    fork & vfork
  • 原文地址:https://www.cnblogs.com/harvey888/p/7689340.html
Copyright © 2011-2022 走看看