一、分组:
分组函数可以对行集进行操作,并且为每组给出一个结果。
使用group by column1,column2,..按columm1,column2进行分组,即column1,column2组合相同的值为一个组
二、常用分组函数: */
AVG([DISTINCT|ALL]n) -- 求平均值,忽略空值
COUNT({*|[DISTINCT|ALL]expr}) -- 统计个数,其中expr用来判定非空值(使用*计算所有选定行,包括重复行和带有空值的行)
MAX([DISTINCT|ALL]expr) -- 求最大值,忽略空值
MIN([DISTINCT|ALL]expr) -- 求最小值,忽略空值
SUM([DISTINCT|ALL]n) -- 求和,忽略空值
/*
三、分组函数语法:*/
SELECT [column,] group_function(column), ...
FROM table
[WHERE condition]
[GROUP BY column]
[ORDER BY column];
/*
四、分组函数使用准则:
DISTINCT 使函数只考虑非重复值,ALL则考虑包括重复值在内的所有值。默认为ALL.
带有expr参数的函数的数据类型可以为CHAR,VARCHAR2,NUMBER,DATE.
所有分组函数都忽略空值。可以使用NVL,NVL2,或COALESCE函数代替空值
使用GROUP BY 时,Oralce服务器隐式地按照升序对结果集进行排序。可以使用ORDER BY 更改排序结果。
可以使用NVL 函数强制分组函数包含空值,如:*/
select avg(nvl(comm,0)) from emp;
/*
五、GROUP BY 子句的语法:
使用GROUP BY 子句可以将表中的行分成更小的组,然后使用分组函数返回每一组的汇总信息*/
SELECT column, group_function(column)
FROM table
[WHERE condition]
[GROUP BY group_by_expression]
[ORDER BY column];
GROUP BY --group_by_expression 即为对哪些列进行分组
/*
六、GROUP BY 使用准则:
SELECT 中出现的列,如果未出现在分组函数中,则GROUP BY子句必须包含这些列
WHERE 子句可以某些行在分组之前排除在外
不能在GROUP BY 中使用列别名
默认情况下GROUP BY列表中的列按升序排列
GROUP BY 的列可以不出现在分组中
七、分组过滤:
使用having子句
having使用的情况:
行已经被分组
使用了组函数
满足having子句中条件的分组将被显示
八、演示:*/
--为数字数据使用AVG和SUM方法
SQL> select min(sal) as min_sal,max(sal) as max_sal,
2 avg(sal) as avg_sal,sum(sal) as sum_sal
3 from scott.emp;
MIN_SAL MAX_SAL AVG_SAL SUM_SAL
---------- ---------- ---------- ----------
800 5000 2073.21429 29025
--对于数字,字符和日期数据类型,你能使用MIN和MAX方法
SQL> select min(hiredate) as min_hiredate,max(hiredate) as max_hiredate from scott.emp;
MIN_HIRED MAX_HIRED
--------- ---------
17-DEC-80 23-MAY-87
--使用count(*),count(expr),count(distinct expr)
--注意coung(*)包含空值、重复值,count(expr)过滤空值,count(distinct expr)即过滤空值,也过滤重复值
SQL> select count(*),count(mgr),count(distinct mgr) from emp;
COUNT(*) COUNT(MGR) COUNT(DISTINCTMGR)
---------- ---------- ------------------
14 13 6
--使用NVL 函数强制分组函数包含空值
SQL> select avg(comm) ,avg(nvl(comm,0)) from emp;
AVG(COMM) AVG(NVL(COMM,0))
---------- ----------------
550 157.142857
--使用group by 子句来分组
SQL> select job ,avg(sal) from emp group by job;
JOB AVG(SAL)
--------- ----------
CLERK 1037.5
SALESMAN 1400
PRESIDENT 5000
MANAGER 2758.33333
ANALYST 3000
--GROUP BY 的列可以不出现在分组中
SQL> select avg(sal) from emp group by job order by avg(sal) desc;
AVG(SAL)
----------
5000
3000
2758.33333
1400
1037.5
--错误的用法,SELECT 中的有些列没有在GROUP BY子句中出现
SQL> select job,avg(sal) from emp;
select job,avg(sal) from emp
*
ERROR at line 1:
ORA-00937: not a single-group group function
--使用having子句过滤分组结果
--查询平均工资高于的部门号,及其平均工资。
select deptno,avg(sal) from emp group by deptno
having avg(sal)>2000;
--查出平均工资在以上的工种(job)
select job,avg(sal) from emp group by job having avg(sal)>2000;
--求人数在人以上的部门
select deptno,count(*) from emp group by deptno having count(*)>5;
--使用分组函数的嵌套
SQL> select max(avg(sal)) from emp group by deptno;
MAX(AVG(SAL))
-------------
2916.66667
分享到:
相关推荐
oracle 分组函数 一看就知道,包括了 最常用的 分组函数,
本博客简单介绍一下oracle分组函数之rollup的用法,rollup函数常用于分组统计,也是属于oracle分析函数的一种 环境准备 create table dept as select * from scott.dept; create table emp as select * from ...
oracle笔记分组函数,涉及组函数案例,在使用组函数的过程中注意事项,有具体的案例说明!
Oracle数据库使用分组函数来对数据进行聚集
oracle分组函数(ppt文档).ppt
oracle的分组函数的概述,以及详细的介绍
oracle如何实现分组排序和统计、聚集,如何分组求top N,什么是over分析函数,row_number(),rank(),dense_rank()区别又是什么, 如何找到一条记录的前后值,这份文档写得太好了。
Oracle中分组后拼接分组字符串[文].pdf
一些關于orcle內嵌的函數和分組,如日期,字答處理(to_char, decode()....)
Oracle 函数分类 :单行函数 分组函数 分析函数单行函数分为:日期函数 数字函数 字符函数 转换函数 其他函数分组函数分为:max(最大值) min(最小值) sum(求和) avg(平均) count(求个数) 分析函数分为:rank() 具有相同...
SQLServer和Oracle的常用函数对比
个人笔记,oracle分组函数笔记。仅供参考,有错误也不要找我
总结了开发中Oracle常用到的一些函数,希望对大家有所帮助。 1、单行函数:表的每行都会有一个结果(字符函数、数字函数、日期函数、转换函数) 单行函数可以嵌套。...3、分组函数:AVG、COUNT、MAX、MIN、SUM
里面有详细的oracle函数 1、Oracle数据类型 2、Oracle函数分为单行函数和多行函数两大类(sql_function) ... 字符函数 数值函数 日期函数 转换函数 通用函数 函数嵌套 分组函数:集合操作符(了解) 实现分页等等
使用Oracle的SQL函数实现工作日和节假日分组统计 本文介绍了使用Oracle的SQL函数来实现工作日和节假日的分组统计,通过对工作日和节假日的判断和统计,可以更好地合理调度人力物力资源,制定节假日劳务补贴政策。...
ORACLE单行函数和组函数,doc文档,使用Oracle时的必备参考文档。
互联网集团出题,能做出这些题,就说明掌握了分组查询的知识点
使用GROUP BY语句时,你一般得不到多级总数。可以用GROUP BY GROUPING SETS来代替GROUP BY CUBE。你可以应用来指定你感兴趣的总数组合。因为它不必计算它不需要集合(也不会产生太多结果),所以对SQL引擎来说更为...
Oracle_PL(SQL)单行函数和组函数及使用