SQL—— 常用聚合函数与GROUP BY、HAVING、EXISTS 语句的使用

前言

        在数据库中,总有一些表用来存储数字信息,而且数量非常大。我们最常见的就是学生的成绩表,除了学生个人的成绩单外,数据库中一般都会有学生成绩的最高分、最低分、平均分和总分。但是成绩表的数据量较大,一个一个地计算是不可能的,所以 SQL 提供了一系列函数帮助我们解决这些常见的计算问题——Aggregate(聚合)函数。除此之外,SQL 还提供了与函数有关的语句,为我们查询和处理数据库数据提供了便利。

        文章演示表:学生成绩表、某网站一周中每天的访问次数


聚合(Aggregate)函数

         聚合函数是数据库众多函数中用来对一组值进行计算并返回单个值的函数。聚合不全是针对数值型字段的,但在这里主要了解针对数值型字段的函数。如果想要了解更多数据库函数请前往数据库函数

         在查询信息时,聚合函数可以对字段的值进行计算并返回显示,在存储过程和触发器中,可以定义变量用来接收聚合函数返回的值。

        本文章主要演示聚合函数在查询信息过程中的使用。

        聚合函数的使用语法:

SELECT Aggregate_name(column_name) FROM table_name;

-- Aggregate_name —— 聚合函数名称
-- column_name —— 使用聚合函数的字段名
-- table_name —— 选取数据的表名

        MAX()

MAX() 用于获取字段中数值的最大值。

        下面使用MAX()函数获取各科成绩的最高分:

SELECT MAX(语文) AS '语文最高分',
       MAX(数学) AS '数学最高分',
       MAX(英语) AS '英语最高分',
       MAX(理综) AS '理综最高分' 
FROM 学生成绩表;

        查询结果:

        MIN()

MIN()函数用于获取字段中数值的最小值。

        下面使用MIN()函数获取各科成绩的最低分:

SELECT MIN(语文) AS '语文最低分',
       MIN(数学) AS '数学最低分',
       MIN(英语) AS '英语最低分',
       MIN(理综) AS '理综最低分' 
FROM 学生成绩表;

       查询结果:

        SUM()

SUM()函数用于计算字段中数值的总和。

        下面使用SUM()函数获取网站一周的总访问量:

SELECT SUM(count_) AS '总访问量' FROM 网站浏览次数;

        查询结果:

        AVG()

AVG()函数用于获取字段中数值的平均数。

        下面使用AVG()获取各科成绩的平均分:

SELECT AVG(语文) AS '语文平均分',
       AVG(数学) AS '数学平均分',
       AVG(英语) AS '英语平均分',
       AVG(理综) AS '理综平均分' 
FROM 学生成绩表;

        查询结果:

      COUNT()

COUNT()函数用于获取某个字段的行数。当一个表中的记录行数过大时便可以使用该函数计算总的记录数。

        下面使用COUNT()获取参加考试的总人数:

SELECT COUNT(序号) AS '参考人数' FROM 学生成绩表;

        查询结果:

GROUP BY

        GROUP BY语句用于将结果集分组,分组可以是一个或多个字段。该语句可以结合一些函数使用。

         GROUP BY语句使用语法:

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;

        在我们查询数据时,选取的多个字段中有一个或多个使用了聚合函数的话是没办法查询信息的,并且会提示错误信息,如下图:

          使用GROUP BY 语句便可以解决这个问题。   

HAVING

        在SQL中,WHERE子句是无法与聚合函数结合使用的,所以SQL提供了HAVING语句解决这个问题。其作用与WHERE一样,主要用于筛选满足要求的数据。

        HAVING语句使用语法:

SELECT column1, aggregate_function(column2)
FROM table_name
GROUP BY column1
HAVING condition;

        语法中condition处的要求是对aggregate_function(column2)的。

EXISTS 

        EXISTS用于判断表中是否存在某条记录、某个存储过程或某个触发器,若存在则返回true,否则返回false。

        下面的代码判断表是否在数据库中存在,若存在则提示”该表已存在“,否则提示”数据库中不存该表“:

IF(EXISTS(SELECT * FROM sys.objects WHERE name='table_name'))
	PRINT '该表已存在';
ELSE
	PRINT '数据库中不存该表';

-- table_name 是要判断的表名

总结

        上面我们看到了常用的聚合函数的使用,使用聚合函数可以轻松解决数据的计算问题,让我们更好的观察到数据库中的特殊数据,可以更好的进行数据分析。数据库中不仅仅有聚合函数,还有很多其他有着不同功能的函数,学会使用他们可以让我们更好的理解并管理数据库。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值