oracle 的分析函数有很多,但是这个函数总是会忘记,我想通过这种方式能让自己记起来,不至于下次还要百度。

创表、表数据(平时练手的表):

prompt PL/SQL Developer import file
prompt Created on 2018年7月5日 星期四 by Administrator
set feedback off
set define off
prompt Creating CKX001...
create table CKX001
(
ID VARCHAR2(20) not null,
NAME VARCHAR2(20) not null,
SEX VARCHAR2(20) not null,
SARL VARCHAR2(20),
ADDRESS VARCHAR2(500),
TIME DATE
)
tablespace USERS
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64K
next 8K
minextents 1
maxextents unlimited
); prompt Disabling triggers for CKX001...
alter table CKX001 disable all triggers;
prompt Deleting CKX001...
delete from CKX001;
commit;
prompt Loading CKX001...
insert into CKX001 (ID, NAME, SEX, SARL, ADDRESS, TIME)
values ('004', '周润发', '1', '2000', '广场', null);
insert into CKX001 (ID, NAME, SEX, SARL, ADDRESS, TIME)
values ('005', '周星驰', '1', '1500', '商场', null);
insert into CKX001 (ID, NAME, SEX, SARL, ADDRESS, TIME)
values ('006', '梁朝伟', '1', '1700', '大街', null);
insert into CKX001 (ID, NAME, SEX, SARL, ADDRESS, TIME)
values ('001', '杨千嬅', '2', '2000', null, to_date('15-05-2018 10:54:19', 'dd-mm-yyyy hh24:mi:ss'));
insert into CKX001 (ID, NAME, SEX, SARL, ADDRESS, TIME)
values ('002', '张柏芝', '2', '1000', '中心公园', to_date('15-05-2018 10:54:19', 'dd-mm-yyyy hh24:mi:ss'));
insert into CKX001 (ID, NAME, SEX, SARL, ADDRESS, TIME)
values ('003', '黎姿', '2', '1200', '河马公寓', to_date('12-05-2018 10:54:44', 'dd-mm-yyyy hh24:mi:ss'));
commit;
prompt 6 records loaded
prompt Enabling triggers for CKX001...
alter table CKX001 enable all triggers;
set feedback on
set define on
prompt Done.

现在我们要查询每个人的工资占平均工资的百分比:

不会用ration_to_reropt的时候总是要用笨的方法,因为我们要求出每个人占总工资的百分比首先要的到总工资,然后在那每个人的去除得到,

类似:

select name,round(sarl/(select sum(sarl) from ckx001),4)*100||'%' salratio from ckx001;

效果虽然能够达到,但是我们像没有想过实际开发中的数据是来自没多张表,就像做过一个扯蛋的需求,数据来自人员信息表和其他十八张档案表的这种设计,

其实还是当初表设计的人脑子里有坑,虽然十八章表字段有所不同,课大部分完全可以设计到一张表去,然后用一个档案Type的字段去区分就好了,跑偏了,

总之我要说的是这个求百分比的SQL可能基准数据来的就非常困难,并不想我们例子上这个是来自一张表,所以也就很easy,我当时也就是看到自己恶心的SQL

时想简化他,最起码要美观简洁,偶尔也可以装个逼。

像这样:

select name,round(ratio_to_report(sarl) over(),4)*100||'%' salratio from ckx001;

上下两条SQL的效果是一样的,但是党我们的基础数据来自很复杂的sql是,下面这种分析函数的使用会让你的SQL干净而又整洁。

oracle 分析函数——ration_to_report 求占有率(百分比)的更多相关文章

  1. oracle分析函数与over()(转)

    文章参考:http://blog.csdn.net/haiross/article/details/15336313 -- Oracle分析函数入门-- 分析函数是什么? 分析函数是Oracle专门用 ...

  2. 常用Oracle分析函数详解 [http://www.cnblogs.com/benio/archive/2011/06/01/2066106.html]

      学习步骤:1. 拥有Oracle EBS demo 环境 或者 PROD 环境2. copy以下代码进 PL/SQL3. 配合解释分析结果4. 如果网页有点乱请复制到TXT中查看 /*假设一个经理 ...

  3. oracle分析函数技术详解(配上开窗函数over())

    一.Oracle分析函数入门 分析函数是什么?分析函数是Oracle专门用于解决复杂报表统计需求的功能强大的函数,它可以在数据中进行分组然后计算基于组的某种统计值,并且每一组的每一行都可以返回一个统计 ...

  4. Oracle分析函数——函数列表

    --------------聚合函数 SUM :该函数计算组中表达式的累积和 MIN :在一个组中的数据窗口中查找表达式的最小值 MAX :在一个组中的数据窗口中查找表达式的最大值 AVG :用于计算 ...

  5. 强大的oracle分析函数

    转载:https://www.cnblogs.com/benio/archive/2011/06/01/2066106.html 学习步骤:1. 拥有Oracle EBS demo 环境 或者 PRO ...

  6. Oracle分析函数大全

    分析函数又叫开窗函数,OLAP函数等,因为有人问我用过开窗函数没,呵,什么是开窗函数,从来没听过,难道是分析函数么.哈哈,最后还真是分析函数哦!用过的东西别名也应该知道,赶上这么个事,就剽窃一眼Ora ...

  7. Oracle分析函数巧妙使用

    在 Oracle中使用Sql必须弄懂分析函数 Oracle开发专题之:分析函数(OVER) 1 Oracle开发专题之:分析函数2(Rank, Dense_rank, row_number) 6 Or ...

  8. oracle分析函数 (转)

    一.总体介绍 12.1 分析函数如何工作 语法 FUNCTION_NAME(<参数>,…) OVER (<PARTITION BY 表达式,…> <ORDER BY 表达 ...

  9. 常用Oracle分析函数详解

    学习步骤:1. 拥有Oracle EBS demo 环境 或者 PROD 环境2. copy以下代码进 PL/SQL3. 配合解释分析结果4. 如果网页有点乱请复制到TXT中查看 /*假设一个经理代表 ...

  10. Oracle分析函数入门

    一.Oracle分析函数入门 分析函数是什么?分析函数是Oracle专门用于解决复杂报表统计需求的功能强大的函数,它可以在数据中进行分组然后计算基于组的某种统计值,并且每一组的每一行都可以返回一个统计 ...

随机推荐

  1. Kafka开启SASL认证 【windowe详细版】

    一.JAAS配置 Zookeeper配置JAAS zookeeper环境下新增一个配置文件,如zk_server_jass.conf,内容如下: Server { org.apache.kafka.c ...

  2. 存储卷PersistentVolume

    概述 与管理计算资源相比,管理存储资源是一个完全不同的问题.为了更好的管理存储,Kubernetes 引入了 PersistentVolume 和 PersistentVolumeClaim 两个概念 ...

  3. nginx+gunicorn部署Django项目

    实际采用的nginx.conf文件内容: server { charset utf-8; listen 80; server_name ip; access_log /webapps/project/ ...

  4. a += 20 和 a = a+20前者不报错,后者报错的原因

    我们在使用a += 20 和 a = a+20两种不同方式的赋值运算是发现尽然前者不报错,后者报错 代码示例: shot s = 5; s += 5; s = s+5; 很明显我们可以看出s = s+ ...

  5. 工厂有了 ERP 系统,为什么还要上 MES 系统?

    工厂可以没有ERP,但如果要用系统,必定是MES系统!所以即使工厂有了ERP,也还是要上MES系统的.产生这样的疑问很重要的一个原因是没有明确ERP与MES到底是啥.ERP是Enterprise Re ...

  6. SpringBoot的starter到底是什么?

    前言 我们都知道,Spring的功能非常强大,但也有些弊端.比如:我们需要手动去配置大量的参数,没有默认值,需要我们管理大量的jar包和它们的依赖. 为了提升Spring项目的开发效率,简化一些配置, ...

  7. 关于Jenkins-Item-Office 365 Connector-下的多选框的参数定义

    在Jenkins的Item中Office 365 Connector下,我们有时会使用到,多选框(复选框),目的是可选择多个多个条目赋值给指定的变量 然后在Build Triggers中可以进行引用, ...

  8. 洛谷U81904 【模板】树的直径

    有负边权,所以用树形DP来找树的直径. 1 //树形DP求树的直径 2 #include<bits/stdc++.h> 3 using namespace std; 4 const int ...

  9. Linux文本相关命令

    Linux文本相关命令 目录 Linux文本相关命令 文本排序命令 文本去重命令 基础命令cut 文本三剑客 sed awk grep 文本排序命令 sort 常用参数: -n:以数值大小进行排序 - ...

  10. JavaScript基本语法(数组与JSON)

    5.数组 #①使用new关键字创建数组 // 1.创建数组对象 var arr01 = new Array(); // 2.压入数据 arr01.push("apple"); ar ...