- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
分组(聚集)函数 27-13 GROUP BY 原则 使用GROUP BY 子句时,应遵循的重要原则有: 如果SELECT 子句中不仅包含组函数(AVG、SUM、COUNT、MAX、MIN、STDDEV、VARIANCE),还包含其它个体列,则这些个体列还必须出现在GROUP BY 子句中。 不能在GROUP BY 子句中使用列别名。 WHERE 子句可在对行进行分组之前排除某些行。 分组(聚集)函数 27-14 组内组 有时需要将组分为更小的组。例如,您可能希望根据部门对所有雇员进行分组;然后,在每个部门中,按职务进行分组。 本示例说明每个部门中从事每项工作的雇员各有多少。 SELECT department_id, job_id, count(*) FROM employees WHERE department_id 40 GROUP BY department_id, job_id; 分组(聚集)函数 27-15 嵌套组函数 使用GROUP BY 时,可以嵌套两层组函数。 SELECT max(avg(salary)) FROM employees GROUP by department_id; 此查询将返回几个值?答案是一个——此查询将找出每个部门的平均薪金,然后从该列表中选择最大值。 分组(聚集)函数 27-16 HAVING 假设我们想找出每个部门的最高薪金,但仅针对有多个雇员的部门进行查找,那该怎么做?此示例中有什么错误? SELECT department_id, MAX(salary) FROM employees WHERE COUNT(*) 1 GROUP BY department_id; 下一张幻灯片将解决此问题。 分组(聚集)函数 27-17 组函数使用要点: 不能在WHERE 子句中使用组函数: 分组(聚集)函数 27-18 HAVING 与使用WHERE 子句限定所选行一样,您可以使用HAVING 子句来限定组。 在使用GROUP BY 和HAVING 子句的查询中,将首先对行进行分组,然后应用组函数,这样将仅显示与HAVING 子句匹配的组。 WHERE 子句用于限制行;HAVING 子句用于限制由GROUP BY 子句返回的组。 SELECT department_id, MAX(salary) FROM employees GROUP BY department_id HAVING COUNT(*) 1; 分组(聚集)函数 27-19 在SELECT 语句中,尽管可将HAVING 子句用于GROUP BY 子句之前,但建议您按以下所示的顺序放置每条子句。如果使用ORDER BY 子句,请始终将其放在最后! SELECT 列, 组函数 FROM 表 WHERE GROUP BY HAVING ORDER BY 分组(聚集)函数 27-20 DISTINCT 关键字DISTINCT 用于仅返回查询中的非重复值或非重复值的组合。 请看右边的查询。如果不使用关键字DISTINCT,该查询将返回D_CDS 表中的所有年份值。 SELECT year as ‘CD Year’ FROM d_cds; 分组(聚集)函数 27-21 DISTINCT 要消除重复行,请按此处所示使用DISTINCT 关键字。 使用DISTINCT 关键字只返回了所有CD 年份一次,而没有重复值。 SELECT DISTINCT year AS ‘CD Year’ FROM d_cds; 分组(聚集)函数 27-22 DISTINCT 关键字DISTINCT 可与所有组函数一起使用。使用DISTINCT 后,函数将仅考虑非重复值。 为什么右侧的两个语句生成不同的结果? SELECT SUM(salary) FROM employees WHERE department_id = 90; SELECT SUM(DISTINCT salary) FROM employees WHERE department_id = 90; 分组(聚集)函数 27-23 DISTINCT 将DISTINCT 与组函数(如COUNT)一起使用时,结果集将返回非重复列值的数量。 雇员们一共从事多少种不同的工作? 有多少种不同的薪金? SELECT COUNT (DISTINCT job_id) FROM employees; SELECT COUNT (DISTINCT salary) FROM employees; 分组(聚集)函数 27-24 COUNT COUNT(表达式) 返回表达式列中非空值的数量。 COUNT(DISTINCT 表达式) 返回表达式列中唯一且非空值的数量。 SELECT COUNT (YE
文档评论(0)