- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
汇总数据
SQL提供了5个汇总函数用于在表的列上进行算术运算,这5个汇总函数是:Count、Sum、Avg、Max、Min。Count和Sum尽管在表面上比较相近,但其作用完全不同。Count用于计算表中数据的行数,而Sum用于计算数值项相加的和。Avg用于计算表中一个字段的平均值,Max用于得到最大值,Min用于得到最小值,如表8.7所示。
表8.7 汇总函数列表
汇总函数Avg(expr)Count(expr),Count(*)
Max(expr)Min(expr)Sum(expr)
描 述
列值的平均值,该列只能包含数字数据
列值的计数(如果将列名指定为expr)或是表或组中所有行的计数(如果指定*),Count(expr)忽略空值,但Count(*)在计数中包含空值
列中最大的值(文本数据类型中按字母顺序排在最后的值),忽略空值列中最小的值(文本数据类型中按字母顺序排在最前的值),忽略空值列值的合计,该列只能包含数字数据
当使用汇总函数时,默认情况下,汇总信息包含所有的指定行。在某些情况下,结果集包含非惟一的行。可使用汇总函数的DISTINCT选项筛选出非惟一的行。
任务9.12
问题描述:计算产品表中的行数。解决方案:
SELECTCount(*)FROMProducts
分析与讨论:
汇总函数Count(*)计算表的行数,包括含有NULL值的行。
注意:除非和GROUPBY相连,在查询的项中,SELECT后面的汇总函数不能和字段名一起使用。如下面的代码是错误的:
SELECTProductName,Count(*)FROMProducts
任务9.13
问题描述:统计订单数目。解决方案:
SELECT Count(DistinctOrderID)AS订单数目
FROM[OrderDetails]
分析与讨论:
汇总函数Count(OrderID)计算OrderID列的值的个数,OrderID列的NULL值不包含在
内。
汇总函数Count(DistinctOrderID)计算OrderID列的值的个数,OrderID列的NULL值
不包含在内,如果多行OrderID值相同,则只取一行参入计数。考虑下面两个查询语句的不同。
SELECT Count(OrderID)AS订单数目FROM[OrderDetails]
SELECT Count(DistinctOrderID)AS订单数目FROM[OrderDetails]
第一个查询语句计算订单明细表中所有的订单数,包括重复的订单,第二个查询只计算
不同的订单。
任务9.14
问题描述:查询所有订单的销售额。解决方案:
SELECT SUM(UnitPrice*Quantity*(1-Discount))AS销售额
FROM[OrderDetails]
分析与讨论:
以上查询使用汇总函数SUM对计算列UnitPrice*Quantity*(1-Discount)求和,求出所有订单的销售额。
分组查询
对于一个查询的输出结果,还可以基于指定的列对它们进行分组操作。通过使用GROUPBY关键字来对行依照指定列相同的值进行分组,这样就可以实现对每组记录进行计算,并将每一组记录合并或汇集为一个记录。像这样使用GROUPBY关键字的查询叫做分组查询,分组查询常和汇总函数一起使用。
按一列的值分组
按一列的值分组,就是对一列使用GROUPBY,这样列值相同的行归为一组,然后就可以在SELECT子句select列表中使用汇总函数进行基于组的计算,每一组都汇集为一行。
任务9.15
问题描述:计算图9.1所示的表(a)订单明细表中每个不同订单订购的产品总数。
(a) (b)
图9.1对OrderID列分组查询
解决方案:
SELECTOrderID,SUM(Quantity)AS产品总数
FROM[OrderDetails]GROUPBYOrderID
分析与讨论:
要计算出图9.1所示的表(a)每个不同订单订购的产品总数,可对表(a)使用GROUPBY关键字对OderID列进行分组,DBMS会首先按照OderID值把所有的行排序,然后将所有OderID列值相同的行归成一组,针对于每一个不同的OderID值,都会有相应的一个组,这样就得到6组,然后对各组的Quantity列求和,就得到各组的订购产品的总数,并将每一组都合并为一条记录(如图9.1(b)所示)。
当使用GROUPBY时,只有在GROU
文档评论(0)