- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
SQL汇总与分组数据
使用聚合函数进行汇总和分组
SQL提供一组聚合函数,它们能够对整个数据集合进行计算,将一组原始数据转换为有用的信息,以便用户使用。例如求成绩表中的总成绩、学生表中平均年龄等。
SQL的聚合函数如表1所示。
表1 聚合函数
聚合函数
支持的数据类型
功 能 描 述
Sum(?)
数字
对指定列中的所有非空值求和
avg(?)
数字
对指定列中的所有非空值求平均值
min(?)
数字、字符、日期
返回指定列中的最小数字、最小的字符串和最早的日期时间
max(?)
数字、字符、日期
返回指定列中的最大数字、最大的字符串和最近的日期时间
count([distinct] *)
任意基于行的数据类型
统计结果集中全部记录行的数量,最多可达2?147?483?647行
count_big([distinct] *)
任意基于行的数据类型
类似于count(?)函数,但因其返回值使用了bigint数据类型,所以最多可以统计2^63-1行
?
1.SUM(?)函数和AVG(?)函数
两个函数都是对列式数字型的进行计算,只不过SUM(?)是对列求和;而AVG(?)是对列求平均值。
示例:
求“grade”表中每学期的课程成绩的总和。在查询分析器中输入的SQL语句如下:
use student
select sum(课程成绩) as 总成绩
from grade
实现的过程如图1所示。
图1 求课程成绩的总和
当与GROUP BY子句一起使用时,每个聚集函数都为每一组生成一个值,而不是对整个表生成一个值。
示例:
在“student”表中,按“性别”分别求年龄的平均值。在查询分析器中输入的SQL语句如下:
use student
select 性别 ,avg(年龄) as 平均年龄
from student group by 性别
实现的过程如图2所示。
图2 男女生的平均年龄
2.MIN(?)函数和MAX(?)函数
MIN(?)和MAX(?)函数分别查询列中的最小值和最大值。但列的数据包含数字、字符或日期/时间信息。MIN(?)和MAX(?)函数结果与列中数据的数据类型完全相同。
示例:
查询“student”表中最早出生的学生。在查询分析器中输入的SQL语句如下:
use student
select min(出生日期) as 最早出生
from Student
实现的过程结果如图3所示。
图3 学生表中年龄最小的学生信息
下面把GROUP BY子句和MAX(?)函数结合使用。
示例:
在“student”表中,按“性别”分别求年龄的最大值。在查询分析器中输入的SQL语句如下:
use student
select 性别, max(年龄) as 最大年龄
from Student
group by 性别
实现的过程如图4所示。
图4 男女生中年龄的最大值
3.COUNT(?)函数和COUNT_big(?)函数
COUNT(?)函数和COUNT_big(?)函数两个函数都是对列中数据值的数目进行计数。它们返回的值总是一个整数,不管列的数据类型。
示例:
求“student”表中女生的人数。在查询分析器中输入的SQL语句如下:
use student
select count(年龄) as 女生记录总数
from student
where 性别=女
实现的过程如图5所示。
图5 “Student”表中女生的记录总数
COUNT(*)就可以求整个表所有的记录数。例如,求“student”表中所有的记录数,SQL语句如下:
use student
select count(*) from student
4.消除重复记录(DISTINCT)
指定DISTINCT关键字不但可以消除查询结果中的重复记录,而且在使用SUM(?)、AVG(?)和COUNT(?)聚合函数时,可以从列中消除重复的值。DISTINCT关键字和聚合函数使用的格式是:聚合函数名称(DISTINCT 列名)。
示例:
在“grade”表中,统计多少学生参加考试。在查询分析器中输入的SQL语句如下:
use student
select count(学号)
from grade
实现的过程如图6所示。
图6 统计参加考试的学生
从上面的统计结果不难看出,实际上参加考试的学生是学号从B001~B005共5名,其中有重复的学号。这样为了正确统计到底有多少学生参加考试,就必须用到关键字DISTINCT。
示例:
在“grade”表中,统计多少学生参加考试。在查询分析器中输入的SQL语句如下:
use student
select count(distinct 学
文档评论(0)