ORACLE学习笔记(6)(分析函数)
—Oracle分析函数 ----(开窗函数,窗口函数)
分析函数介绍
分析函数是Oracle专门用于解决复杂报表统计需求的功能强大的函数,它可以在数据中进行分组然后计算基于组的某种统计值,
并且每一组的每一行都可以返回一个统计值。
分析函数和聚合函数的不同之处是什么?
◎普通的聚合函数用group by分组,
◎每个分组返回一个统计值,
◎而分析函数采用 partition by 分组,
◎并且每组每行都可以返回一个统计值。
分析函数的语法结构:
函数名()OVER(PARTITION BY 字段 ORDER BY )
----------------查询EMP表中每个部门每个人的平均工资
SELECTA.DEPTNO,A.ENAME ,AVG(A.SAL)
FROM EMP A
GROUP BY A.DEPTNO,A.ENAME ;
-----------------------------
SELECTA.DEPTNO,A.ENAME ,AVG(A.SAL)OVER(PARTITION BY A.DEPTNO ORDER BY 1)
FROM EMP A;
----------查询整个公司的员工姓名以及平均工资
SELECTA.ENAME ,AVG(A.SAL)
FROM EMP A
GROUP BY A.ENAME ;-----------------------
SELECTA.ENAME ,AVG(A.SAL)OVER( /*ORDER BY 2*/)
FROM EMP A;
–4.2 分析函数种类和用法
- MAX(),MIN(),SUM(),AVG(),COUNT() --加了ORDER BY 是累计求值
—求EMP表中每个部门的员工姓名、总工资
SELECTA.DEPTNO,A.ENAME,SUM(A.SAL)OVER(PARTITION BY A.DEPTNO ORDER BY 1)
FROM EMP A;
-----------------------
SELECTA.DEPTNO,A.ENAME,SUM(A.SAL)
FROM EMP A
GROUP BY A.DEPTNO,A.ENAME;
—求每个部门工资高于部门平均工资的员工数量占整个部门人数的百分比
----每个部门工资高于部门平均工资:求每个部门中的员工工资比部门平均工资高
------------------------方法1SELECT A1.DEPTNO,A1.ENAME,COUNT(A1.ENAME)OVER(PARTITION BY A1.DEPTNO) /A1.COUNT_NFROM (selectA.DEPTNO,A.ENAME,A.SAL,AVG(A.SAL)OVER(PARTITION BY A.DEPTNO ORDER BY 1) AVG_SAL,COUNT(A.EMPNO)OVER(PARTITION BY A.DEPTNO) COUNT_NFROM EMP A)A1WHERE A1.SAL>AVG_SAL ;
-----------------------------方法2SELECT DISTINCTB.DEPTNO,COUNT(B.ENAME)OVER(PARTITION BY B.DEPTNO)/A1.COUNT_EMP FROM EMP BINNER JOIN (SELECT A.DEPTNO,A.ENAME,AVG(A.SAL)OVER(PARTITION BY A.DEPTNO) AVG_SAL,COUNT(A.EMPNO)OVER(PARTITION BY A.DEPTNO) COUNT_EMPFROM EMP A)A1ON B.ENAME=A1.ENAMEAND B.SAL>A1.AVG_SAL ;
----------------------------------------------------------
SELECT A.DEPTNO,SUM(CASEWHEN A.SAL > A.AVG THEN1ELSE0END) / COUNT(1)FROM (SELECT E.*, AVG(E.SAL) OVER(PARTITION BY E.DEPTNO) AVG FROM EMP E) AGROUP BY A.DEPTNO;
---------求EMP 表中工资高于部门平均工资且工资高于其上级领导工资的员工姓名、工资、部门平均工资
SELECTA1.ENAME 员工--,B.ENAME 领导,A1.SAL 员工工资-- ,B.SAL 领导工资,A1.AVG_SAL 部门平均工资
FROM EMP B
INNER JOIN (SELECTA.EMPNO,A.ENAME,A.JOB,A.MGR,A.HIREDATE,A.SAL,A.COMM,A.DEPTNO,AVG(A.SAL)OVER(PARTITION BY A.DEPTNO ) AVG_SALFROM EMP A)A1ON B.EMPNO=A1.MGRAND B.SAL<A1.SALAND A1.SAL>A1.AVG_SAL ;
ORACLE学习笔记(6)(分析函数)相关推荐
- oracle:oracle学习笔记(四)循环、光标、异常、瀑布模型
oracle学习笔记:循环.光标.异常 文章目录 打印Hello World 定义基本变量 引用型变量(单行)` my_name emp.ename%type ` 记录型变量(多行) `emp_rec ...
- Oracle学习笔记---(一)
Oracle学习笔记---(一) 一 1.Oracle简介 Oracle是以高级结构化查询语言(SQL)为基础的大型关系数据库:是一个对象关系数据库管理系统(ORDBMS).它提供了关系数据库 ...
- 在大量数据迁移期间oracle学习笔记
在数据迁移期间oracle学习笔记 0主键(自增) 1用户代码 2区域代码 3承保公司代码 4理赔编码 5投保确认码 6案件状态 7案件进展 8重开案件进展 9转换后案件状态 需求分析: 1.根据上述 ...
- oracle 权限问题9017,[数据库]oracle学习笔记(一)用户管理_星空网
oracle学习笔记(一)用户管理 2014-04-13 0 1 --oracle学习第一天 2 --连接 @后面连接数据库实例,具体连接到那个数据库 3 conn scott/tiger@MYORA ...
- 【Oracle】Oracle学习笔记
[Oracle]Oracle学习笔记 目录 [Oracle]Oracle学习笔记 P1.Oracle数据库的安装和配置 P2.Oracle数据库管理 P3-0.初步SQL P3-1.基本SQL SEL ...
- oracle学习笔记 Oracle体系结构概述
oracle学习笔记 Oracle体系结构概述 从这节开始,开始讲oracle数据库体系结构. 首先从总体上,从概述上把oracle整体的体系结构讲一下, 然后接下来的时间我们会一块一块的将oracl ...
- Oracle学习笔记 字符集概述
Oracle 学习笔记 字符集概述 这节课开始讲oracle里面的字符集 偏重于原理和简单的一些判断以及实现 字符集它涉及到很多的东西 比如建库和操作系统环境 这节课把字符集的原理性的东西以及常见的操 ...
- oracle学习笔记 oracle软件安装准备工作 第一部分 环境准备
oracle学习笔记 oracle软件安装准备工作 第一部分 环境准备 这节课对初学者来说内容较多,我把它分成了三篇. 即使这样也不可能把每个可能遇到的问题都说到,如果遇到没说到的问题自己上网搜 ...
- Oracle学习笔记(七)——分组统计查询
Oracle学习笔记(七)--分组统计查询 基础统计函数的使用 分组统计操作的实现,结合多表查询使用分组统计 常用统计函数 COUNT(*|[DISTINCT]字段) MAX(字段,日期或数字) MI ...
- oracle update单引号,Oracle学习笔记:update的字段中包括单引号
平时update的时候直接更改字段内的值,例如: update table_temp set name = 'Hider' where id = 100; 但更新后的值中包括单引号,则不能按以上方式进 ...
最新文章
- Jmeter性能测试入门(一)
- linux服务器的日志管理
- python 多进程 requests_python多进程(二)
- linux下开放端口
- JSON 是个什么??!!!
- python为什么找不到csv文件_python读写csv文件的方法(还没试,先记录一下)
- 关于JavaScript的编译原理
- C#细说多线程(下)
- php 检测编码函数,自己写了一个php检测文件编码的函数
- 关于Git和Github
- [导入]《交互设计之路——让高科技产品回归人性》读书笔记(九)
- IoT---(1) 窄带物联网NB-IoT协议必须要了解的几个问题
- Linux系统编程 -- 进程控制 进程终止
- c#窗体程序 内嵌浏览器
- navicat 8.0 mysql 名、组织、注册码
- JavaScript 效果 - so cool
- xiunobbs 4 mysql_轻论坛程序 - Xiuno BBS 4.0
- 知网caj文件转pdf(无需下载任何软件,傻瓜式操作,必看!!!)
- HTML5文件选择框(各种类型)
- C# 生成图片清晰度问题(转载)