分组函数:
那什么是分组函数呢?
分组函数就是作用于一组数据,并对一组数据返回一个值。
分组函数共有5种类型:
AVG(平均值)COUNT(计数函数)MAX(最大值)MIN (最小值)SUM (合计函数)
那么它的语法是怎么写的呢:请看下图
下面看下平均值和合计函数的写法:
SELECT AVG(salary), SUM(salary)
FROM employees
WHERE job_id LIKE '%REP%';
效果图如下:
最小值和最大值的写法:可以对任意数据类型的数据使用 MIN 和 MAX 函数
SELECT MIN(hire_date), MAX(hire_date)
FROM employees;
效果图如下:
COUNT(计数)函数:COUNT(*) 返回表中记录总数,适用于任意数据类型,COUNT(expr) 返回expr不为空的记录总数。
SELECT COUNT(*)
FROM employees
WHERE department_id = 50;
效果图如下:
DISTINCT 关键字,去重复,COUNT(DISTINCT expr)返回expr非空且不重复的记录总数
SELECT COUNT(DISTINCT department_id)
FROM employees;
效果图如下:
GROUP BY 子句
在SELECT 列表中所有未包含在组函数中的列都应该包含在 GROUP BY 子句中,包含在 GROUP BY 子句中的列不必包含在SELECT 列表中。
SELECT department_id, AVG(salary)
FROM employees
GROUP BY department_id ;
还可以在GROUP BY中包含多个类:
SELECT department_id dept_id, job_id, SUM(salary)
FROM employees
GROUP BY department_id, job_id ;
效果图:
非法使用组函数,不能在 WHERE 子句中使用组函数,可以在 HAVING 子句中使用组函数。
HAVING 子句:
使用 HAVING 过滤分组:
1. 行已经被分组。
2. 使用了组函数。
3. 满足HAVING 子句中条件的分组将被显示
SELECT department_id, MAX(salary)
FROM employees
GROUP BY department_id
HAVING MAX(salary)>10000 ;
效果图: