详细说明分组聚合函数.doc

  1. 1、本文档共28页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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 条件显示特定的

文档评论(0)

jgx3536 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档