Oracle数据库(六)—— 分组函数

时间:2023-01-11 09:49:38

(一)组函数

avg:平均函数

max:最大值函数

min:最小值函数

sum:求和函数

stddev:标准差函数

Oracle数据库(六)—— 分组函数

count():计数函数 

    count(expr) 返回expr不为空的记录总数

Oracle数据库(六)—— 分组函数

 

NVL函数使分组函数无法忽略空值

Oracle数据库(六)—— 分组函数

 

COUNT(DISTINCT expr)返回expr非空且不重复的记录总数

Oracle数据库(六)—— 分组函数

 

(二) group by

1、对单个列分组

-- 求出employees表中各部门的平均工资

Oracle数据库(六)—— 分组函数

 

2、对多个列分组

-- 求出employees表中各部门、各工种的平均工资

Oracle数据库(六)—— 分组函数

  • 在SELECT 列表中所有未包含在组函数中的列都应该包含 在 GROUP BY 子句中
  • 不能在 WHERE 子句中使用组函数
  • 可以在 HAVING 子句中使用组函数

(三)having:过滤分组

使用 HAVING 过滤分组:

  1. 行已经被分组。

  2. 使用了组函数。

  3. 满足HAVING 子句中条件的分组将被显示

SELECT column, group_function

FROM table

[WHERE condition]

[GROUP BY group_by_expression]

[HAVING group_condition]

[ORDER BY column];

-- 求出各部门中平均工资大于6000的部门

Oracle数据库(六)—— 分组函数

(四)嵌套组函数

-- 求出各部门中平均工资的最大值

 Oracle数据库(六)—— 分组函数

(五)总结

  1. 使用组函数:avg(),sum(),max(),min(),count()
  2. 在查询中使用 GROUP BY 子句。
  3. 在查询中使用 HAVING 子句。