compute子句、聚集函数、HAVING子句、order by子句详解

发布时间:2017-4-25 16:38:10 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"compute子句、聚集函数、HAVING子句、order by子句详解",主要涉及到compute子句、聚集函数、HAVING子句、order by子句详解方面的内容,对于compute子句、聚集函数、HAVING子句、order by子句详解感兴趣的同学可以参考一下。

①compute 和 compute by 子句 select 工号,姓名,职务,基本工资,部门编号 from 员工 compute count(工号) as 员工总数,avg(基本工资) 提示错误:消息 156,级别 15,状态 1,第 3 行 关键字 'as' 附近有语法错误。 解释:改子句中属性不能取别名,系统会自动分配cnt,avg作为列名 ②where中不可以使用聚集函数,当然也不可以使用聚集后的字段的别名 select 商品.商品编号,商品名 from 商品 join 销售明细 on 商品.商品编号=销售明细.商品编号 where sum(金额)>10000 group by 商品.商品编号,商品名 错误提示:聚合不应出现在 WHERE 子句中,除非该聚合位于 HAVING 子句或选择列表所包含的子查询中,并且要对其进行聚合的列是外部引用。 解释:where子句中不能用聚集函数作为条件表达式 如果改成:select 商品.商品编号,商品名,sum(金额) as 销售总额 from 商品 join 销售明细 on 商品.商品编号=销售明细.商品编号 where 销售总额>10000 group by 商品.商品编号,商品名 则提示错误:列名 '销售总额' 无效。   这里需要探讨 SQL Select语句完整的执行顺序:  1、from子句组装来自不同数据源的数据; 2、where子句基于指定的条件对记录行进行筛选; 3、group by子句将数据划分为多个分组; 4、使用聚集函数进行计算; 5、使用having子句筛选分组,通常会使用到聚集函数; 6、计算所有的表达式; 7、select 的字段; 8、使用order by对结果集进行排序,可以使用聚集函数。 SQL语言不同于其他编程语言的最明显特征是处理代码的顺序。在大多数据库语言中,代码按编码顺序被处理。但在SQL语句中,第一个被处理的子句式FROM,而不是第一出现的SELECT。SQL查询处理的步骤序号:   (1)  FROM <left_table>     (3) <join_type> JOIN <right_table>    (2) ON <join_condition>    (4) WHERE <where_condition>    (5) GROUP BY <group_by_list>    (6) WITH {CUBE | ROLLUP}    (7) HAVING <having_condition>    (8) SELECT    (9) DISTINCT       (9) ORDER BY <order_by_list>   (10) <TOP_specification> <select_list> 所以在执行where子句时,‘销售总额’还未计算。  ③ HAVING子句可以使用(且常常使用聚集函数),但是不可以引用聚集后的别名 select 部门编号,count(*) 人数 from 员工 group by 部门编号 having 人数>3  提示错误:消息 207,级别 16,状态 1,第 4 行  列名 '人数' 无效。 正确写法:将别名“人数”改成count(*)即可 ④ order by子句后面可以使用聚集函数,且可以使用聚集函数的别名 select 部门编号,count(*) 人数 from 员工 group by 部门编号 order by 人数 这个可以正确显示查询结果,如果把人数改为count(*),当然也是对的。  

上一篇:串并并串转换
下一篇:

相关文章

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。

好贷网好贷款