数据库系统原理:聚集函数

yumo6664周前 (04-05)技术文章16

SQL命令包括数据定义、查询、操纵和控制四大类,其中数据查询是数据库的核心操作。


学习在SQL数据查询中使用聚集函数的方法。

一、五种聚集函数介绍

聚集函数(集合函数)→垂直方向(一个值):主要用法是在垂直方向上把多个值变为一个值。

(1)count(计数函数)

count([distinct]<列名>):统计一列中值的个数,不计算空值;

count([distinct]*):计算元组的个数(行数),不管列值是否为空。

distinct:可选项,表示不计重复元组。

(2)sum(求和函数)

sum([distinct]<列名>):计算一列的总和(要求此列必须是数值型)。

(3)avg(平均值)

avg([distinct]<列名>):计算一列的平均值(要求此列必须是数值型)。

(4)max(最大值)

max([distinct]<列名>):求一列值中的最大值。

(5)min(最小值)

min([distinct]<列名>):求一列值中的最小值。

除count(*)外,其他的函数计算涉及到列中的空值都要先去掉再计算。

二、聚集函数的举例

例图

例1:求c2课程的平均成绩。

Select avg(grade)

From SC

Where cno = 'c2';

此查询的结果为:(80+70+90)/3=80

每个学生的课程成绩是记录在SC表的中的,所以要从SC表中获取成绩数据;要选择的是课程c2的成绩,所以选择条件是“课程号是c”;选择之后有四行数据,要计算的是选择c2这门课的平均成绩,所以在选择的时候“SELECT”了avg(grade),而表示直接选择成绩。

使用了聚集函数,它把多个值计算为一个值。由于是使用avg函数,所以计算的时候是去掉了空值才计算的。

例2:求男同学的总人数和平均年龄。

Select count(*), avg( age)

From S

Where sex='男'

从S表中、条件是“性别是男生”,计算总的人数使用count(*)来表示;使用avg( age)来计算总的男生的平均年龄。

例3:统计选修了课程的学生人数。

Select count(sno) // count(distinct sno)

From SC ;

学生选课信息是记录在SC表中的,那么统计学号的个数就计多少个学生选课。

如果出现一个学生选多门课、只能计算一次的情况,需要使用distinct去除重复的学号信息

例4:求选修课程c2的学生的最高分和最低分。

Select max(grade)as最高分,min(grade)

From SC

Where cno= 'c2';

选修课程是在SC表中,条件是“课程号是c2”,需要它们的选课成绩,计算它们的最高分、最低分。

从SC表中查询选择课程c2的学生的最高分和最低分,从下图的数据中可以看出课程c2最高分是78、最低分是50;当结果输出的时候,如果不起名字的话,它是以“无列名”来表示的,这样的话结果无法明确的表示“78”和“50”的含义是什么。

所以,通常在有计算的列输出的时候会给它起名字来标识这一列的值的含义。所以,在使用聚集函数的时候最好使用别名来改变列标题。

三、总结

在查询中使用聚集函数可以增强查询的检索功能,方便用户操作。需要注意的是在涉及列的聚集函数都跳过空值而只处理非空值即去掉空值以后再计算。

需要注意,在where子句中不能使用聚集函数作为条件表达式,例如查找平均分大于80的学生学号,不能使用:

"Select sno From SC Where avg(grade)>80"。会出现出错提示。

此外,聚集函数也不能嵌套使用。

相关文章

数据库的存储原理

1. 数据存取在数据库管理系统中,数据的存取过程为:应用程序通过 DML 向 DBMS 发出存取请求,如 SELECT 语句;对命令进行语法检查,正确后检查语义和用户权限(通过数据字典 DD),并决定...

DeepSeek本地RAG知识库(17):向量数据库原理讲解(小白也能懂)

大家好!我是程序员寒山。近日很多小伙伴问,为什么要用向量数据库?它到底是怎么存储数据的?今天就给大家揭秘一下向量数据库,看看它有什么神奇的地方?一、什么是向量数据?——菜谱变"坐标"说向量数据库前,首...

面试官:说一下数据库事务的实现原理

#数据库事务的实现原理是什么样的?#什么是数据库事务?数据库事务的四大特性?数据库事务隔离级别?数据库事务的实现原理?一、什么是数据库事务?数据库事务是指作为一个不可分割的操作单元执行的一系列数据库操...

数据库加密技术原理与实践

1、数据库加密概述数据库加密是指对存储在数据库中的敏感数据进行编码处理的过程,目的是防止未经授权的访问和数据泄露。加密后的数据即使被未授权的第三方获取,也无法理解其原始含义,从而保护数据的机密性数据库...

详解MySQL事务原理

今天给大家分享的是大数据开发基础部分MySQL的事务,事务在MySQL知识点中非常重要的部分,很多伙伴只是知道MySQL的四大特性,但不知道其中的原理,老刘这次给大家详细的描述MySQL四大特性的原理...

【数据库原理】(7)关系数据库的完整性约束

关系模型的完整性规则是为了确保数据的唯一性和数据之间的关系的准确性。有三类完整性约束:实体完整性、参照完整性和用户定义完整性。其中实体完整性和参照完整性是必须满足的完整性约束条件,应该由关系系统自动支...