- 1、本文档共28页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
详细说明分组聚合函数
聚合函数总结
在实际SQL应用中,经常需要进行分组聚合,即将查询对象按一定条件分组,然后对每一 个组进行聚合分析。比如我们常见的一些分组计算需求:求某个部门的薪资总和,薪资平均 值,薪资最大值等等。
分组聚合函数也可称之为多行函数,它的输入是多个行构成得一个行集(这个行集可以 是一张表的所有行,也可以是按照某个维度进行分组后的某一组行),而输出都是一个值。
1.分组聚合函数语法以及 SQL 语句执行过程
SQL中使用分组聚合函数的语法
SELECT [column,] group_function(column), ... FROM table
[WHERE condition]
[GROUP BY column][having] [ORDER BY column];
在 select 语句中使用 group by 子句将行划分成较小的组,然后,使用聚组函数返回每 一个组的汇总信息,另外,可以使用 having 子句限制返回的结果集。
查询语句的 select 和 group by,having,Order by 子句是分组聚合函数唯一出现的地方, 在 where 子句中不能使用分组聚合函数。
select department_id, sum(salary)
from employees where salary10000 group by department_id
having sum(salary) 11000 order by sum(salary)
sql语句执行过程
(1) 按select找到where满足条件的元组形成结果表。 相当于:
select department_id, salary from employees
where salary10000
(2) 将结果表按group中指定的列进行分组,该属性列值相等的元组为一组,通常会 在每组中作用集函数。(如果group指定多个列,先按第一列分组,然后在每个组中再按第二 列分组)
相当于:
select department_id, sum(salary)
from employees where salary10000 group by department_id
(3) 如果group子句带having短语,则分组聚合后只有满足having指定条件的组才输 出。
相当于:
select department_id, sum(salary)
from employees where salary10000 group by department_id
having sum(salary) 11000
(4) 如果有order子句,则将结果表按order子句指定的列升序或降序排序。 相当于:
select department_id, sum(salary)
from employees where salary10000 group by department_id
having sum(salary) 11000
order by sum(salary)
2.group by 可选项
什么时候可以无:非分组查询中 非分组查询中,聚合函数实际上等于将表中所有记录作为一个组来运算。此时在 select
列表中指定的列只能是包含聚组函数,不能包含数据表本身的列。比如求所有员工的总工资。
select sum(salary) from employees
什么时候必须有:在分组查询中 分组查询中,聚合函数是将数据按分组关键字分组,然后对每一组的函数自变量中的内
容进行聚合运算。Select 子句字段可以是分组关键字(group by 后面字段)和聚合函数。 比 如求各个部门员工总工资。
注意:
a.如果没有group by 子句,select 列表中不允许出现字段与分组函数混用的情况。
b.在带有group by子句的查询语句中,在select列表中指定的列要么是group by 子 句中指定的列,要么包含聚组函数。出现在select列表中的字段,如果不是包含在分组函数 中,那么该字段必须同时出在Group by子句中。
c.group by后面字段的顺序不同分组结果不同。
3. 条件查询(where 和 having)
在一个 sql 语句中可以有 where 子句和 having 子句。having 与 where 子句类似,均 用于设置限定条件。
where 子句的作用是在对查询结果进行分组前,将不符合 where 条件的行去掉,即在分 组之前过滤数据,条件中不能包含聚组函数,使用 where 条件显示特定的行。
having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组 函数,使用 having 条件显示特定的
您可能关注的文档
- 药品质量风险管理讨论.pdf
- 药片研究.ppt
- 药剂经理助理PPT.ppt
- 药品转让新规的解读.ppt
- 药物分离工程评论.ppt
- 药物二级配额管理分析.pdf
- 荣克·艾力山项目概况.ppt
- 药物培训.ppt
- 药物分类管理.ppt
- 药物分销渠道.ppt
- 分析let s单元56ago2卷纸zheng unit56.pdf
- 塑胶材料其它分类原料pa9t 12.pdf
- md16x16数字媒体切换器设备.pdf
- 者参考项目发起人学科类型单位序列承包商修订页代码顺序典型.pdf
- 届世界天然气大会阿姆斯特丹2006add10288.pdf
- 期测试记录表每周weekly g1g6 journeys tests level 6 lesson26.pdf
- modernize-whitepaper现代化您应用程序白皮书.pdf
- anybackup产品典型案例分析.pdf
- 约克金融工程课程tfeslide32.pdf
- 广州市妇女儿童医疗中心历份教学药历01tjy.pdf
最近下载
- 华为云平台运维复习试题附答案.doc
- 2022-2023学年湖北省荆州市荆州区八年级(下)期末物理试卷(含解析).pdf VIP
- 十年(2013-2023年)高考生物真题分项汇编专题解析版合集共20套.doc
- 矫健:天局(胜天半子!).pdf
- (完整版)高中英语3500单词表含音标.pdf
- 150吨履带吊性能表(参考)1.doc VIP
- 湖北省荆州市荆州区2022-2023学年八年级下学期期末考试数学试卷(含答案).pdf VIP
- 人教版(新教材)高中英语选修2Unit4Journey Across a Vast Land精品学案:Writing—An email about a journey.docx
- 2012-2021十年高考生物真题(含解析)共92套.docx
- 2023年湖南师范大学附属小学教师招聘考试真题及答案.docx
文档评论(0)