08-oracle统计函数(单组分组函数)
--count时尽量count(列名),count(*)也可以。
--count,max,min,sum,avg,median(中位数)
select count(empno),count(distinct job),max(hiredate),min(hiredate),sum(sal),round(avg(sal),2)
from emp;

--median:中位数(中间值),一组按大小顺序排列的数据,处于中间位置的数。
--行数为奇数时取中间行的数值(19行/2取9行的值),偶数时取中间2行数值的平均值(若18行则中位数的值为(9行+10行)除以2)。
--如sal共15行,第8行即中位数(中间值)
select median(sal) from emp;
--使用group by统计每个部门的人数
select deptno,count(deptno)
from emp
where deptno is not null
group by deptno;

--group by 以职位分组,查询出每个职位的最低和最高工资
select job,min(sal),max(sal)
from emp
group by job;


--数据统计时,语句中没有group by时,select的选项只能出现统计函数(count(),sum(),max(),min(),avg());

--数据统计时,语句中有group by时,select的选项只能出现统计函数和group by排序使用的分组字段(即列名);
select job,count(ename) from emp group by job;

--数据统计时,使用嵌套函数时,无论与剧中有没有group by ,select选项中只允许出现嵌套行数,其它字段均不允许出现。

--重复的列可以进行分组(GROUP BY),SQL语句执行顺序为FROM,WHRER,GROUP BY,SELECT,ORDER BY
--查询部门名称,部门人数,平均工资,平均工作年限
SELECT D.DNAME 部门名称,count(ename)部门人数,ROUND(AVG(SAL),2)平均工资,ROUND(AVG(MONTHS_BETWEEN(SYSDATE,HIREDATE)/12),2)平均工作年限
FROM EMP E FULL OUTER JOIN DEPT D ON( E.DEPTNO=D.DEPTNO)
GROUP BY D.DNAME;

--查询工资各个等级工资的雇员人数,平均工资
SELECT TRIM(S.GRADE),DECODE(S.GRADE,1,'A',2,'B',3,'C',4,'D',5,'E') 工资等级,COUNT(E.ENAME) 雇员人数,ROUND(AVG(E.SAL),2) 平均工资
FROM EMP E,SALGRADE S
WHERE E.SAL BETWEEN S.LOSAL AND S.HISAL
GROUP BY S.GRADE
ORDER BY 工资等级

--查询领取佣金和不领取佣金的平均工资,平均工作年限,雇员人数
SELECT '不领取佣金',AVG(SAL)平均工资,ROUND(AVG(MONTHS_BETWEEN(SYSDATE,HIREDATE)/12),2)平均工资年限,COUNT(EMPNO)雇员人数
FROM EMP E WHERE E.COMM IS NULL
UNION
SELECT '领取佣金',AVG(SAL)平均工资,ROUND(AVG(MONTHS_BETWEEN(SYSDATE,HIREDATE)/12),2)平均工资年限,COUNT(EMPNO)雇员人数
FROM EMP E WHERE E.COMM IS NOT NULL;

--多字段分组

--GROUP BY 字段1,字段2
--查询部门详细信息:部门名称,部门编号,部门位置,平均工资,总工资,雇员人数
SELECT D.DNAME,D.DEPTNO,D.LOC,ROUND(AVG(E.SAL),2),SUM(SAL),COUNT(E.ENAME)
FROM DEPT D,EMP E
WHERE D.DEPTNO=E.DEPTNO(+)
GROUP BY D.DNAME,D.DEPTNO,D.LOC;


--HAVING 必须和GROUP BY一起使用
--查询所有平均工资大于2000的职位信息,平均工资,雇员人数
SELECT E.JOB,ROUND(AVG(SAL),2),COUNT(E.ENAME)
FROM EMP E
GROUP BY E.JOB
HAVING AVG(SAL)>2000;

--查询不包含销售的的工作名称,从事同一工作的雇员工资总和,且工资大于5000,并按照从低到高排序
select E.JOB,SUM(E.SAL) A
from emp e
where e.job !='SALESMAN'
GROUP BY E.JOB
HAVING SUM(E.SAL)>5000
ORDER BY A DESC;

08-oracle统计函数(单组分组函数)的更多相关文章
- Oracle的“ORA-00937: 不是单组分组函数” 如何解决?
之前在编写oracle的sql语句时遇到这个问题,这里做个记录 问题描述:ORA-00937: 不是单组分组函数 问题原因:select语句中又在查询某一列的值,其中还有聚合函数 原先本人编写SQL是 ...
- Oracle报错:不是单组分组函数
报错:不是单组分组函数 实例:select sum(HWJZ) ,rq from JcChargeInfo 原因: 1.如果程序中使用了分组函数,则有两种情况可以使用: 程序中存在group by, ...
- Error:ORA-00937: 非单组分组函数错误
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/istend/article/details/34429721 ORA-00937: 非单组分组函数错 ...
- ORA-00937:不是单组分组函数_Oracle
Demo: SELECT USER_ID, USER_NAME, USER_SEX, MAX(USER_AGE), SUM(USER_MONEY) AS USER_MONEY USER_TEL, US ...
- Oracle - 查询语句 - 分组函数
/* 分组函数 不能再select子句中出现普通的列,除非这个列在group by中给出 所有的空值都会被分为一组 分组过滤 SELECT FROM WHERE GROUPBY HAVING ORDE ...
- Oracle系列六 分组函数
分组函数作用于一组数据,并对一组数据返回一个值. 组函数类型 AVG COUNT MAX MIN STDDEV SUM 组函数语法 SELECT [column,] group_function(co ...
- 逆袭之旅DAY14.东软实训.Oracle.多表连接、分组函数、子查询
2018-07-10 08:29:55 思考应用场景 异常数据的测试 6.显示能挣得奖金的雇员的姓名.工资.奖金,并以工资和奖金降序排列.select ename,sal,commfrom empWH ...
- oracle(sql)基础篇系列(一)——基础select语句、常用sql函数、组函数、分组函数
花点时间整理下sql基础,温故而知新.文章的demo来自oracle自带的dept,emp,salgrade三张表.解锁scott用户,使用scott用户登录就可以看到自带的表. #使用ora ...
- oracle 分组函数执行分析
先上例了: select job as "JOB1", avg(sal) as "avg sal" from scott.emp group by " ...
随机推荐
- Union、Union All、Intersect、Minus
转自:http://www.2cto.com/database/201208/148795.html Union:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序: Union All: ...
- .NET基础 (06)面向对象的实现
面向对象的实现1 C#中类可以有多个父类.可以实现多个接口吗2 简述C#中重写.重载和隐藏的概念3 为什么在构造方法中调用虚方法会导致问题4 在C#中如何声明一个类不能被继承 面向对象的实现 1 C# ...
- C++-结构体,联合体,枚举,的区别
结构体: struct NUM { int number; }a; 结构体是声明只是一个模型,没有分配内存空间.当进行定义结构体变量后才分配内存空间 联合体: union data { int a ...
- COLLATE 函数
指定SQL server的排序规则Chinese_PRC指的是中国大陆地区,如果是台湾地区则为Chinese_TaiwanCI指定不区分大小写,如果要在查询时区分输入的大小写则改为CSAS指定区分重音 ...
- linux安装redis及phpredis环境配置
下载安装包 cd /home/redis/tar wget http://redis.googlecode.com/files/redis-2.4.17.tar.gz tar zxvf redis-2 ...
- [LeetCode 题解]: Permutations
Given a collection of numbers, return all possible permutations. For example,[1,2,3] have the follow ...
- C#中使用Redis学习一 windows安装redis服务器端和客户端
学习背景 今天是2015年1月2日,新年刚开始的第二天,先祝大家元旦快乐啦(迟到的祝福吧^_^).前段时间一直写Jquery插件开发系列博文,这个系列文章暂停一段时间,最近一直在看redis,我将把r ...
- 简单几步,提升.Net Core的开发效率
附加IIS进程调式? 以前在开发ASP.NET(MVC)项目的时候,为了加快程序的启动速度(调式),我们会选择使用IIS.先用IIS架设还在开发的项目,在需要调式的时候附加进程,而在更多时候,如果调整 ...
- [Maven实战-许晓斌]-[第二章]-2.2基于UNIX系统安装maven
>> >> >>3
- java 线程 获取当前线程
java 线程 获取当前线程 Thread th=Thread.currentThread(); System.out.println("Tread name:"+th.getNa ...