设为首页 收藏本站
查看: 669|回复: 0

[经验分享] Oracle中有关Group by 中avg();sum();min();max();count();的运用整理(Oracle的执行顺序)

[复制链接]
YunVN网友  发表于 2016-8-16 06:50:42 |阅读模式
  表 tabzx:

select * from tabzx
  
  表数据:
  
DSC0000.jpg
  查询语句:
  1:

select count(*),avg(tabzx.salary),sum(tabzx.salary),max(tabzx.salary),min(tabzx.salary)from tabzx
  结果:
  
DSC0001.jpg
 
  分析:
  此时Oracle将表tabzx作为一个单独的组(group)进行函数处理的;
  
  Assumption:
  SQL表达式编写为:

select tabzx.dept_id, count(*),avg(tabzx.salary),sum(tabzx.salary),max(tabzx.salary),min(tabzx.salary)from tabzx
  结果:
  
DSC0002.jpg
 
  总结:
  Oracle中,avg();sum();min();max();的返回是都是一条数据,针对同一张表,同样的查询条件,使用可以在同一张表中显示;修改后出错,因为SQL中的条件整张表,所以不能显示任何原来表中的字段。弹出以上提示....
  
  2:

select tabzx.dept_name,count(*),avg(tabzx.salary),sum(tabzx.salary),max(tabzx.salary),min(tabzx.salary)from tabzx group by tabzx.dept_name
  结果:
  
DSC0003.jpg
 
  分析:
  第一个SQL特殊的group by,此处的SQL就算相对特殊的group by tabzx.dept_name,此处可以增加一字段tabzx.dept_name。
  
  Assumption:

select tabzx.dept_name,tabzx.dept_id,count(*),avg(tabzx.salary),sum(tabzx.salary),max(tabzx.salary),min(tabzx.salary)from tabzx group by tabzx.dept_name
  结果:
  
DSC0004.jpg
 
  总结:
  Oracle中,avg();sum();min();max();的返回是都是一条数据,针对同一张表,同样的查询条件,使用可以在同一张表中显示;修改后出错,因为SQL中的条件group by tabzx.dept_name,所以不能显示其它表中的字段。弹出以上提示....
  值得注意的是:这里的avg();sum();min();max()的字段都可以任性选择。统计出来的结果,是分组后的统计...
  
  3:

select avg(tabzx.dept_id),sum(tabzx.dept_id) ,avg(tabzx.salary),sum(tabzx.salary),max(tabzx.salary)from tabzx group by tabzx.dept_name
  
  结果:
  
DSC0005.jpg
 
  4:

select tabzx.dept_name,tabzx.job_cat,tabzx.em1_id,avg(tabzx.salary),max(tabzx.salary) from tabzx group by tabzx.dept_name,tabzx.job_cat,tabzx.em1_id having avg(tabzx.salary)>1000;
  
  结果:
  
DSC0006.jpg
  总结: 
  group by _1_ , _2_ , _3_ 中,avg();sum();min();max();count();数据是按照_3_ 分组统计的....也就是说最后一个....
  
  原创转载请注明,谢谢...
  
  -----------------------------------------------------------------------------------------------------------------------------
  
  1.select 列 from 表列表名/视图列表名 where 条件.
2.select 列 from 表列表名/视图列表名 where 条件 group by (列列表) having 条件
3.select 列 from 表列表名/视图列表名 where 条件 group by (列列表) having 条件 order by 列列表
4.select 列 from 表1 join 表2 on 表1.列1=表2.列1...join 表n  on 表n.列1=表(n-1).列1 where 表1.条件 and 表2.条件...表n.条件
执行顺序:
  1. 先where 后select
2. 先where 再group 再having 后select
3. 先where 再group 再having 再select 后order
4. 先join  再where 后select

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-258301-1-1.html 上篇帖子: 转 Oracle to_date的使用方法 日期格式参数 含义说明 Oracle to_date的使用方法 下篇帖子: oracle 的面向服务的基础架构(SOA)研讨会(济南) 的一点笔记
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表