oracle 分析函数——ration_to_report 求占有率(百分比)
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 求占有率(百分比)的更多相关文章
- oracle分析函数与over()(转)
文章参考:http://blog.csdn.net/haiross/article/details/15336313 -- Oracle分析函数入门-- 分析函数是什么? 分析函数是Oracle专门用 ...
- 常用Oracle分析函数详解 [http://www.cnblogs.com/benio/archive/2011/06/01/2066106.html]
学习步骤:1. 拥有Oracle EBS demo 环境 或者 PROD 环境2. copy以下代码进 PL/SQL3. 配合解释分析结果4. 如果网页有点乱请复制到TXT中查看 /*假设一个经理 ...
- oracle分析函数技术详解(配上开窗函数over())
一.Oracle分析函数入门 分析函数是什么?分析函数是Oracle专门用于解决复杂报表统计需求的功能强大的函数,它可以在数据中进行分组然后计算基于组的某种统计值,并且每一组的每一行都可以返回一个统计 ...
- Oracle分析函数——函数列表
--------------聚合函数 SUM :该函数计算组中表达式的累积和 MIN :在一个组中的数据窗口中查找表达式的最小值 MAX :在一个组中的数据窗口中查找表达式的最大值 AVG :用于计算 ...
- 强大的oracle分析函数
转载:https://www.cnblogs.com/benio/archive/2011/06/01/2066106.html 学习步骤:1. 拥有Oracle EBS demo 环境 或者 PRO ...
- Oracle分析函数大全
分析函数又叫开窗函数,OLAP函数等,因为有人问我用过开窗函数没,呵,什么是开窗函数,从来没听过,难道是分析函数么.哈哈,最后还真是分析函数哦!用过的东西别名也应该知道,赶上这么个事,就剽窃一眼Ora ...
- Oracle分析函数巧妙使用
在 Oracle中使用Sql必须弄懂分析函数 Oracle开发专题之:分析函数(OVER) 1 Oracle开发专题之:分析函数2(Rank, Dense_rank, row_number) 6 Or ...
- oracle分析函数 (转)
一.总体介绍 12.1 分析函数如何工作 语法 FUNCTION_NAME(<参数>,…) OVER (<PARTITION BY 表达式,…> <ORDER BY 表达 ...
- 常用Oracle分析函数详解
学习步骤:1. 拥有Oracle EBS demo 环境 或者 PROD 环境2. copy以下代码进 PL/SQL3. 配合解释分析结果4. 如果网页有点乱请复制到TXT中查看 /*假设一个经理代表 ...
- Oracle分析函数入门
一.Oracle分析函数入门 分析函数是什么?分析函数是Oracle专门用于解决复杂报表统计需求的功能强大的函数,它可以在数据中进行分组然后计算基于组的某种统计值,并且每一组的每一行都可以返回一个统计 ...
随机推荐
- win10设置vmware 虚拟机开机自启
Windows10设置VMware虚拟机开机自启的具体步骤如下: 一.配置vmrun环境变量 1)找到VMware的安装目录,并将目录路径拷贝进入环境变量进行添加,如下图 2)检查添加的环境变量是否生 ...
- python 作用域与命名空间
作用域 作用域分为: 全局作用域 局部作用域 在函数内部的作用域叫做局部作用域,局部作用域中的变量叫做局部变量 非函数内部的作用域叫做全局作用域,全局作用域中的变量叫做全局变量 局部作用域可以使用全局 ...
- Netty内存池的整体架构
一.为什么要实现内存管理? Netty 作为底层网络通信框架,网络IO读写必定是非常频繁的操作,考虑到更高效的网络传输性能,堆外内存DirectByteBuffer必然是最合适的选择.堆外内存在 JV ...
- 在UniApp的H5项目中,生成二维码和扫描二维码的操作处理
在我们基于UniApp的H5项目中,需要生成一些二维码进行展示,另外也需要让用户可以扫码进行一定的快捷操作,本篇随笔介绍一下二维码的生成处理和基于H5的扫码进行操作.二维码的生成,使用了JS文件wea ...
- 基于electron+vue+element构建项目模板之【改造项目篇】
1.概述 开发平台OS:windows 开发平台IDE:vs code 上一篇中已完成了electron-vue项目的创建,本篇章中则介绍在此项目基础上进行取消devtools的安装.项目结构的改造. ...
- 【项目实战】kaggle产品分类挑战
多分类特征的学习 这里还是b站刘二大人的视频课代码,视频链接:https://www.bilibili.com/video/BV1Y7411d7Ys?p=9 相关注释已经标明了(就当是笔记),因此在这 ...
- K8S ingress控制器
文章转载自: K8S ingress控制器 (一)https://blog.51cto.com/u_13760351/2728917 K8S ingress控制器 (二)https://blog.51 ...
- 监控Redis集群--废弃,使用新教程
prometheus监控redis需要用到redis_exporter. redis_exporter 项目地址:https://github.com/oliver006/redis_exporter ...
- 安全强化Linux 服务器的七个步骤
这篇入门文章将向你介绍基本的 Linux 服务器安全知识.虽然主要针对 Debian/Ubuntu,但是你可以将此处介绍的所有内容应用于其他 Linux 发行版.我也鼓励你研究这份材料,并在适用的情况 ...
- 了解Pytorch|Get Started with PyTorch
一个开源的机器学习框架,加速了从研究原型到生产部署的路径. !pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple import ...