MySQL讲义第28讲——select 查询之聚合函数
聚合函数又称为统计函数,可以对查询结果进行统计和汇总,对一组值进行计算并返回一个单一的值。聚合函数经常与 GROUP BY 子句一同使用。常用的聚合函数包括SUM、COUNT、AVG、MAX 和 MIN,实现对表中数据的统计(求和、计数、平均值、最大值和最小值等)。
一、count( ) 函数
count( ) 函数统计记录数量并返回,常与 GROUP BY 子句连用。格式如下:
count(distinct *|字段名
|表达式
)
举例:
1、统计男生人数
mysql
> SELECT
-> count(*) as 男生人数
-> FROM
-> stu
-> WHERE
-> gender
='男';
+
| 男生人数
|
+
| 6 |
+
1 row in set (0.17 sec
)
mysql
> SELECT
-> count(if(gender
= '男',1,null)) as 男生人数
-> FROM
-> stu
;
+
| 男生人数
|
+
| 6 |
+
1 row in set (0.00 sec
)
2、统计身高超过 175 的学生人数
mysql
> SELECT
-> count(*) as 人数
-> FROM
-> stu
-> WHERE
-> height
>= 175;
+
| 人数
|
+
| 4 |
+
1 row in set (0.02 sec
)
3、统计有学生的系的个数
mysql
> SELECT
-> count(distinct dept_id
) as 系的个数
-> FROM
-> stu
;
+
| 系的个数
|
+
| 3 |
+
1 row in set (0.03 sec
)
二、sum( ) 函数
SUM( ) 函数返回一组值的和,忽略 NULL 值。如果找不到匹配行,返回 NULL 值。常与 GROUP BY 子句连用。格式如下:
sum(字段
|表达式
)
举例:
1、统计所有员工的工资总额
mysql
> SELECT
-> sum(salary
) as 工资总额
-> FROM
-> emp
;
+
| 工资总额
|
+
| 84500.00 |
+
1 row in set (0.00 sec
)
2、统计女生人数
mysql
> SELECT
-> sum(if(gender
= '女',1,0)) as 女生人数
-> FROM
-> stu
;
+
| 女生人数
|
+
| 5 |
+
1 row in set (0.00 sec
)
3、统计工资超过 10000 元的员工的工资总额
mysql
> SELECT
-> sum(salary
) as 工资总额
-> FROM
-> emp
-> WHERE
-> salary
> 10000;
+
| 工资总额
|
+
| NULL |
+
1 row in set (0.01 sec
)
三、avg( ) 函数
AVG( ) 函数计算一组值的平均值。 计算时忽略 NULL 值。常与 GROUP BY 子句连用。格式如下:
avg(字段
|表达式
)
举例:
1、查询所有员工的平均工资
mysql
> SELECT
-> avg(salary
) as 平均工资
-> FROM
-> emp
;
+
| 平均工资
|
+
| 6500.000000 |
+
1 row in set (0.00 sec
)
2、查询男生的平均身高
mysql
> SELECT
-> avg(height
) as 平均身高
-> FROM
-> stu
-> WHERE
-> gender
= '男';
+
| 平均身高
|
+
| 176.50000 |
+
1 row in set (0.00 sec
)
mysql
> SELECT
-> avg(if(gender
= '男',height
,null)) as 平均身高
-> FROM
-> stu
;
+
| 平均身高
|
+
| 176.50000 |
+
1 row in set (0.00 sec
)
四、max( ) 函数
max( ) 函数返回一组值中的最大值。计算时忽略 NULL 值。常与 GROUP BY 子句连用。格式如下:
max(字段
|表达式
)
举例:
1、查询所有员工的最高工资
mysql
> SELECT
-> max(salary
) as 最高工资
-> FROM
-> emp
;
+
| 最高工资
|
+
| 9200.00 |
+
1 row in set (0.00 sec
)
2、查询女生身高的最大值
mysql
> SELECT
-> max(height
) as 最大身高
-> FROM
-> stu
-> WHERE
-> gender
= '女';
+
| 最大身高
|
+
| 170.0 |
+
1 row in set (0.00 sec
)
mysql
> SELECT
-> max(if(gender
= '女',height
,null)) as 最大身高
-> FROM
-> stu
;
+
| 最大身高
|
+
| 170.0 |
+
1 row in set (0.00 sec
)
五、min( ) 函数
min( ) 函数返回一组值中的最小值。计算时忽略 NULL 值。常与 GROUP BY 子句连用。格式如下:
min(字段
|表达式
)
举例:
1、查询所有员工的最低工资
mysql
> SELECT
-> min(salary
) as 最高工资
-> FROM
-> emp
;
+
| 最高工资
|
+
| 4700.00 |
+
1 row in set (0.00 sec
)
2、查询女生身高的最小值
mysql
> SELECT
-> min(height
) as 最低身高
-> FROM
-> stu
-> WHERE
-> gender
= '女';
+
| 最低身高
|
+
| 160.0 |
+
1 row in set (0.00 sec
)
mysql
> SELECT
-> min(if(gender
= '女',height
,null)) as 最大身高
-> FROM
-> stu
;
+
| 最大身高
|
+
| 160.0 |
+
1 row in set (0.00 sec
)