资源描述:
《Oracle公司内部数据库培训资料Les05_chinese.ppt》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、分组函数目标通过本章学习,您将可以:了解组函数。描述组函数的用途。使用GROUPBY字句数据分组。使用HAVING字句过滤分组结果集。什么是分组函数分组函数作用于一组数据,并对一组数据返回一个值。EMPLOYEES表EMPLOYEES中的工资最大值…组函数类型AVGCOUNTMAXMINSTDDEVSUMSELECT[column,]group_function(column),...FROMtable[WHEREcondition][GROUPBYcolumn][ORDERBYcolumn];组函数语法SELECTAVG(salary),MAX(sa
2、lary),MIN(salary),SUM(salary)FROMemployeesWHEREjob_idLIKE'%REP%';AVG(平均值)和SUM(合计)函数可以对数值型数据使用AVG和SUM函数。MIN(最小值)和MAX(最大值)函数可以对任意数据类型的数据使用MIN和MAX函数。SELECTMIN(hire_date),MAX(hire_date)FROMemployees;SELECTCOUNT(*)FROMemployeesWHEREdepartment_id=50;COUNT(计数)函数COUNT(*)返回表中记录总数。COUNT(计
3、数)函数COUNT(expr)返回expr不为空的记录总数。SELECTCOUNT(commission_pct)FROMemployeesWHEREdepartment_id=80;SELECTCOUNT(DISTINCTdepartment_id)FROMemployees;DISTINCT关键字COUNT(DISTINCTexpr)返回expr非空且不重复的记录总数SELECTAVG(commission_pct)FROMemployees;组函数与空值组函数忽略空值。SELECTAVG(NVL(commission_pct,0))FROMemp
4、loyees;在组函数中使用NVL函数NVL函数使分组函数无法忽略空值。分组数据EMPLOYEES求出EMPLOYEES表中各部门的平均工资4400…95003500640010033SELECTcolumn,group_function(column)FROMtable[WHEREcondition][GROUPBYgroup_by_expression][ORDERBYcolumn];分组数据:GROUPBY子句语法可以使用GROUPBY子句将表中的数据分成若干组SELECTdepartment_id,AVG(salary)FROMemployee
5、sGROUPBYdepartment_id;GROUPBY子句在SELECT列表中所有未包含在组函数中的列都应该包含在GROUPBY子句中。GROUPBY子句包含在GROUPBY子句中的列不必包含在SELECT列表中。SELECTAVG(salary)FROMemployeesGROUPBYdepartment_id;使用多个列分组EMPLOYEES使用多个列进行分组…SELECTdepartment_iddept_id,job_id,SUM(salary)FROMemployeesGROUPBYdepartment_id,job_id;在GROUPB
6、Y子句中包含多个列非法使用组函数所用包含于SELECT列表中,而未包含于组函数中的列都必须包含于GROUPBY子句中。SELECTdepartment_id,COUNT(last_name)FROMemployees;SELECTdepartment_id,COUNT(last_name)*ERRORatline1:ORA-00937:notasingle-groupgroupfunctionGROUPBY子句中缺少列非法使用组函数不能在WHERE子句中使用组函数。可以在HAVING子句中使用组函数。SELECTdepartment_id,AVG(sa
7、lary)FROMemployeesWHEREAVG(salary)>8000GROUPBYdepartment_id;WHEREAVG(salary)>8000*ERRORatline3:ORA-00934:groupfunctionisnotallowedhereWHERE子句中不能使用组函数过滤分组Themaximumsalaryperdepartmentwhenitisgreaterthan$10,000EMPLOYEES…SELECTcolumn,group_functionFROMtable[WHEREcondition][GROUP
8、BYgroup_by_expression][HAVINGgroup_condition][O