- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第 一 节 求和与求平均
一、什么是组函数
组函数就是我们前面我说过的多行函数。它主要针对表进行操作。因为只有表中,才有多行数据。下面我们以SUM和AVG这两个组函数为例,先从它们开始,介绍组函数的特性。
二、SUM 求和函数
在我们的第一节内容中,我简单已经过SUM的使用。下面我们再详细介绍一下SUM函数的使用。
我们任以上一节内容中所建立的表为例。在YDSP(已定商品)表中,记录有所有已销售商品的信息,我显示一下:
sid=38 pid=17 select spbh,jg from ydsp;
SPBH JG
------------- ----------
101 14500
101 14500
101 14500
202 9800
102 6000
201 9800
已选择6行。
我显示了SPBH(商品编号)和每样商品的价格(JG),我现在想统计一下所有已销售商品的总额。也就是对JG列求一下合了。命令如下:
sid=38 pid=17 select sum(jg) from ydsp;
SUM(JG)
-------------------
69100
结果是69100,它计算的这个结果,到底是不是JG列所有行数据的行呢?我们如下操作来验证一下:
sid=38 pid=17 select 14500+14500+14500+9800+6000+9800 from dual;
14500+14500+14500+9800+6000+9800
-------------------------------------------------
69100
我手动的把JG列中的六行数据加到了一起,结果的确是69100。ORACLE在执行SUM()函数时,会从JG列取出每一行,把结果累加到一起。我们在讲单行函数和多行函数时就说过,对于单行函数,将列中每一行数据看作一个个体,单行函数分别对每个个体进行计算。而多行函数则把列中所有行数据看作一个整体,多行函数对这个整体中的所有元素,统一的做求和、求平均、统计最大或最小值等运算,无论此整体中包含多少行,最终返回的结果只有一个。一个总的和或平均值,或最大值,或最小值,等等。单行函数对每一行单独进行处理,每一行它都返回一个结果。
多行函数无法同其他列一起使用,如:
sid=38 pid=17 select spbh,sum(jg) from ydsp;
select spbh,sum(jg) from ydsp
*
第 1 行出现错误:
ORA-00937: 不是单组分组函数
这是很容易理解的,SPBH(商品编号)列有6行数据,而SUM(jg)只有一行结果。一个6行,一个只有一行,Oracle没办法将这两个列组合在一起。列可以和单行函数组合使用,因为单行函数每一行都返回一个结果,列中有6行,就返回6个结果。如:
sid=38 pid=17 select spbh,round(jg,0) from ydsp;
SPBH ROUND(JG,0)
------------- -----------
101 14500
101 14500
101 14500
202 9800
102 6000
201 9800
已选择6行。
我对JG(价格)列做四舍五入运算,保留0位小数位数。ROUND()函数分别对6行数据进行处理。而不是将6行数据总计在一起处理。
三、WHERE 条件 与组合函数
在没有条件时,组合函数默认对列中所有行数据进行处理。我们可以使用条件,限制求和的行数。比如,我现在只想求一下编号为101的商品的总的销售额。
sid=38 pid=17 select sum(jg) from ydsp where spbh=’101’;
SUM(JG)
--------------------
43500
四、AVG 求均
AVG和SUM的用法完全相同,它是在SUM求后和,再除以行数,就得到一个平均值。例如:
sid=38 pid=17 select avg(jg) from ydsp;
AVG(JG)
------------------
11516.6667
五、
文档评论(0)