当前位置:嗨网首页>书籍在线阅读

10-统计函数和分组记录查询

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

8.4 统计函数和分组记录查询

本节视频教学录像:4分钟

在实际项目中,用户需要通过表中的基本数据进行统计,比如求某列值的和、某列值的平均值等。MySQL提供统计函数进行统计。

Figure-0234-198.jpg 1.COUNG() 函数

COUNG()函数有两种形式。一种为COUNG(),参数为“”,统计的是符合条件的行数;另外一种为COUNGt(列名),参数为某列名,统计的是列中非空值的个数。这两种形式的参数前都可以加DISTINCT关键字消除重复。

【范例8-21】

查询计算机系的学生人数。

MySQL> select count(*) count_stu -> from student -> where sdept='计算机';

结果如下。

+-----------+ | count_stu | +-----------+ | 2| +-----------+ 1 row in set (0.04 sec)

【范例8-22】

查询选修了课程的学生人数。

MySQL> select count(distinct sno) -> from sc;

因为一个学生可能选修多门课,所以要使用DISTINCT关键字消除重复的学生编号,然后再进行统计,结果如下。

+---------------------+ | count(distinct sno) | +---------------------+ | 2| +---------------------+ 1 row in set (0.00 sec)

2.AVG([DISTINCT] <列名>) 统计某列的平均值

【范例8-23】

查询计算机系的学生平均年龄。

MySQL> select avg(sage) -> from student -> where sdept='计算机';

结果如下。

+-----------+ | avg(sage) | +-----------+ | 20.0000| +-----------+ 1 row in set (0.04 sec)

3.SUM([DISTINCT] <列名>) 统计某列值的总和

【范例8-24】

查询不同年龄的总和。

MySQL> select sum(distinct sage) -> from student;

结果如下。

+--------------------+ | sum(distinct sage) | +--------------------+ | 60| +--------------------+ 1 row in set (0.03 sec)

4.MAX([DISTINCT] <列名>)查询某列的最大值

【范例8-25】

查询选修1号课程的最高分。

MySQL> select max(grade) -> from sc -> where cno=1;

结果如下。

+------------+ | max(grade) | +------------+ | 89| +------------+ 1 row in set (0.05 sec)

5.MIN([DISTINCT] <列名>)查询某列的最小值

【范例8-26】

查询选修1号课程的最低分。

MySQL> select min(grade) -> from sc -> where cno=1;

结果如下。

+------------+ | min(grade) | +------------+ | 78| +------------+ 1 row in set (0.00 sec)

MIN()函数和MAX()函数的参数不仅可以为数值类型,也可以为字符类型。

提示 WHERE子句中不能使用统计函数作为表达式。