作者:黄钟瑶
完成时间:2019年4月16日
开发工具与技术:Oracle
分组函数:对指定一组数据进行分组并返回一个值。使用分组函数操作数据能够更直观的了解数据,方便视野。
组函数类型:AVG(平均数)、COUNT(总数)、MAX(最大值)、MIN(最小值)、SUM(合计)
介绍一下简单用法
AVG(平均数) select avg(salary) from employees
COUNT(总数) select count(salary) from employees
SUM(合计) select sum(salary) from employees
AVG、SUM属于算术上的,因此比较适合用于数值型数据,Count函数和Sum函数在某种需要时,执行效果有可能相似
MAX(最大值) select max(salary) from employees
MIN(最小值) select min(salary) from employees
Max和Min、Count不受数据类型的限制
这几种函数可以根据需要组合起来使用
组函数忽略空值不算
但是NVL函数可以使组函数不忽略空值,计算为0
分组数据;Group by,查询将不是组函数的列包含在Group by子句中进行分组,否则数据库认为非法使用组函数,会出错。Group by可以将多个列进行分组,但是where不能组合组函数使用
SELECT employee_id,last_name, AVG(salary)
FROM employees
GROUP BY employee_id,last_name ;
如果列全是组函数,则默认Group by分组,Group by可写可不写
SELECT max(salary),AVG(salary)
FROM employees
GROUP BY employee_id,last_name ;
过滤分组:Having,使用Having子句前提是查询列表中必须要有组函数存在,如果没有组函数,则不构成Having子句。Having经常与Group by一起使用。
例如:查询员工的最高工资大于12000的
SELECT employee_id, MAX(salary)
FROM employees
GROUP BY employee_id
HAVING MAX(salary)>12000 ;
嵌套组函数:将两个组函数组合起来合理使用达到理想效果,也须使用Group by进行分组
例如:查询部门的工资的最小平均值
select min(avg(salary)) from employees
group by department_id;
总结:学了一些基本的分组函数,感觉对子句的使用要合理。子句的执行顺序合理,也不能忽略语法的限制。嵌套组函数在查询一些简单数据时也是比较方便的。