ORACLE:分组函数
目录
一、分组函数
avg max min sum
count
二、创建聚组
group by
分组函数误用
1、select语句中有分组函数,相关的列却没有出现在group by中
2、group by误用别名
3、过滤组只能使用having,不能使用where
4、分组函数最多嵌套两层
一、分组函数
分组函数:
作用于一组数据,对一组数据返回一个值,常用的有
AVG:平均值
MAX:最大值
MIN:最小值
SUM:求和
COUNT:统计
avg max min sum
select sal from emp where deptno=10;SAL
----------245050001300select max(sal),min(sal),avg(sal),sum(sal) from emp where deptno=10;MAX(SAL) MIN(SAL) AVG(SAL) SUM(SAL)
---------- ---------- ---------- ----------5000 1300 2916.66667 8750
count
- count(*):返回表中行的总数,包括重复与数据列中为null的行,其他分组函数统计都不计算null的行。如comm非空行为4行,其球平均值时是comm之和除以4。
- count(列名):统计非空的行
select avg(nvl(comm,0)) from emp;AVG(NVL(COMM,0))
----------------157.142857select avg(comm) from emp;AVG(COMM)
----------550
1、返回comm列中非空行数
select count(comm) from emp;COUNT(COMM)
-----------42、返回表emp总行数
select count(*) from emp;COUNT(*)
----------14
distinct
count(distinct)
select distinct deptno from emp;DEPTNO
----------301020select count(distinct deptno) from emp;COUNT(DISTINCTDEPTNO)
---------------------3
二、创建聚组
group by
SELECT column, group_function(column) FROM table
[WHERE condition]
[GROUP BY group_by_expression]
[ORDER BY column]
- 使用group by子句将表中数据分成若干组
- 不能使用列别名
select deptno,avg(sal),max(sal),min(sal) from emp group by deptno order by deptno;DEPTNO AVG(SAL) MAX(SAL) MIN(SAL)
---------- ---------- ---------- ----------10 2916.66667 5000 130020 2175 3000 80030 1566.66667 2850 950
#根据多个列进行分组
select deptno,job,avg(sal) from emp group by deptno,job order by deptno;DEPTNO JOB AVG(SAL)
---------- --------- ----------10 CLERK 130010 MANAGER 245010 PRESIDENT 500020 ANALYST 300020 CLERK 95020 MANAGER 297530 CLERK 95030 MANAGER 285030 SALESMAN 14009 rows selected.
分组函数误用
1、select语句中有分组函数,相关的列却没有出现在group by中
select deptno,max(sal) from emp;
select deptno,max(sal) from emp*
ERROR at line 1:
ORA-00937: not a single-group group function
2、group by误用别名
select deptno no ,max(sal) from emp group by no;
select deptno no ,max(sal) from emp group by no*
ERROR at line 1:
ORA-00904: "NO": invalid identifier
3、过滤组只能使用having,不能使用where
使用having时,having可以在group by前也可以在其后面
having是对分组后的结果进行过滤
select deptno,avg(sal) from emp where avg(sal) >2000 group by deptno;
select deptno,avg(sal) from emp where avg(sal) >2000 group by deptno*
ERROR at line 1:
ORA-00934: group function is not allowed hereselect deptno,avg(sal) from emp having avg(sal) >2000 group by deptno;DEPTNO AVG(SAL)
---------- ----------10 2916.6666720 2175
select deptno,avg(sal) from emp group by deptno having avg(sal) >2000;DEPTNO AVG(SAL)
---------- ----------10 2916.6666720 2175
4、分组函数最多嵌套两层
select max(avg(sal)) from emp group by deptno;MAX(AVG(SAL))
-------------2916.66667select count(max(avg(sal))) from emp group by deptno;
select count(max(avg(sal))) from emp group by deptno*
ERROR at line 1:
ORA-00935: group function is nested too deeply
ORACLE:分组函数相关推荐
- 【转】【CUBE】Oracle分组函数之CUBE魅力
[转][CUBE]Oracle分组函数之CUBE魅力 http://blog.itpub.net/519536/viewspace-610997/ Oracle的CUBE与ROLLUP功能很相似,也是 ...
- oracle 高效函数,Oracle分组函数之高效的ROLLUP
Oracle/" target=_blank>Oracle分组函数之高效的ROLLUP ㈠ 初始化实验坏境 www.2cto.com [sql] hr@ORCL> create ...
- oracle rollup 排序,Oracle分组函数之ROLLUP用法
rollup函数 本博客简单介绍一下oracle分组函数之rollup的用法,rollup函数常用于分组统计,也是属于oracle分析函数的一种 环境准备 create table dept as s ...
- Oracle分组函数和筛选语句详析
分组函数:分组函数作用于一组数据,并对一组数据返回一个值 并且当分组函数嵌套了两层时就必须使用Group by 来标注出分组函数分组依据 并且分组聚合函数只能嵌套一层组函数, \还有就是,分组函数不会 ...
- oracle分类函数总结,Oracle分组函数之ROLLUP的基本用法
rollup函数 本博客简单介绍一下oracle分组函数之rollup的用法,rollup函数常用于分组统计,也是属于oracle分析函数的一种 环境准备 create table dept as s ...
- 【ROLLUP】Oracle分组函数之ROLLUP魅力
本文通过演示给出Oracle ROLLUP分组函数的用法,体验一下Oracle在统计查询领域中的函数魅力.ROLLUP分组函数可以理解为Group By分组函数封装后的精简用法,这里同时给出ROL ...
- oracle打散分组函数,oracle分组函数
分组函数 一 介绍 1.分组函数作用于一组数据,并对一组数据返回一个值 2.组函数类型: avg 平均值 count max min stddev sum 二 代码 1.工资最高的:SQL> s ...
- Oracle分组函数
SQL> --avg,count,max,min,sum举例 SQL> --统计员工个数 SQL> select count(*) from emp; COUNT(*) ...
- Oracle→分组函数、GROUP BY、HAVING、多表查询、连接、外连接、自连接、子查询单行多行、ROWNUM、ANY、ALL、NOT IN(...IS NOT NULL)、条件求和、DUAL
分组函数 GROUP BY HAVING GROUP BY ROLLUP() 多表查询 等值连接 不等值连接 外连接 自连接 层次查询 子查询 子查询伪劣ROWNUM ROWID NOT IN(-IS ...
- oracle model 分组,【已解决】关于Oracle分组函数高级用法(按照N条分组并生成唯一号)...
prompt PL/SQL Developer import file prompt Created on 2018年3月30日 by set feedback off set define off ...
最新文章
- 带限制条件的最大子矩阵 - 牛客
- 毕业设计第四次任务书
- git reset --hard、git reset --sort及git revert区别
- 向ASP.NET Core迁移
- Python编辑统一缩进(Pycharm)
- [转载]压岁钱年年涨的行情不要太纠结
- table内容超出宽度时隐藏并显示省略标记
- 拓端tecdat|R语言stan进行基于贝叶斯推断的回归模型
- PHP PDO(mysql) 封装类
- ARM9 S3C2440 定时器中断
- pdf2swf font2swf avi2swf
- 【java】爬虫之零基础利用postman分析并实现12306余票查询功能
- 成为java架构师需要几年,详细说明
- 联想昭阳E42-80笔记本电脑重装系统记录
- win10升级工具_win10升级安装工具
- 基于四叉树的图像压缩问题
- IDEA中的TODO使用和Debug史诗级详细使用说明
- 使用Zend Expressive快速进行企业应用开发
- 海外服务器租用主要要看三个方面
- AR Engine光照估计能力,让虚拟物体在现实世界更具真实感
热门文章
- 元宇宙爆火!新风口下程序员有哪些机会?
- 民非企业盈利怎么处理_​民办非企业利息收入如何处理
- Eclipse 字体不一致问题
- Substance Painter 服饰材质制作 衣服 腰带
- 中职生计算机基础知识总结,浅谈中职学生的计算机基础教育
- call()、apply()、bind()的区别
- Eyenuk宣布FDA核准EyeArt自主AI系统用于糖尿病视网膜病变筛查
- C/C++ 位域定义
- 在matlab中使用spm8,[转载]在matlab中同时使用spm2,spm5,spm8
- JDK中的Hprof命令