问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

oracle 分组函数 group by的问题

发布网友 发布时间:2022-04-08 03:53

我来回答

2个回答

懂视网 时间:2022-04-08 08:15

分组函数的使用:

常用的分组函数:

Avg(求平均值),sum(求总和),min(求最小值),max(求最大值),count(求总个数),wm_concat(行转列)

例:select count( distinct deptno) from emp ;

行转列: select deptno 部门号,wm_concat(ename) 部门中员工的名字  from emp group by deptno;

----------------------------------------------------

分组函数与空值:(分组函数会自动忽略空值)

1.      统计员工的平均工资

Select sum(sal)/count(*) 一,sum(sal)/count(sal) 二,avg(sal) 三 from emp;

 

2.      统计员工的平均奖金

Select sum(comm)/count(*)一,  sum(comm)/count(comm) 二,avg(comm) 三from emp;

 

注意:nvl函数使分组函数无法忽略空值

Selectsum(comm)/count(*)一,   sum(comm)/count(nvl(comm,0)) 二from emp;

Comm为空时,nvl函数返回0,0不为null,所以count不会忽略

------------------------------------------------------

Group by子句的使用

1.求部门号和部门的平均工资

Selectdeptno,avg(sal) from emp

Group bydeptno;

 抽象:

Selecta,b,c,avg(x) from table

Group bya,b,c;

规定:在select列表中所有未包含在组函数中的列都应该包含在group by 子句中;

相反的,在group by 中的列,不必包含在组函数中

 

多个列的分组:(分组逻辑:先按照group by 后面第一个列分组,如果第一个列相同,再按照第二个列分组,如果所有的列都相同,那么这就是同一组中的数据)

按照部门,不同的职位,统计员工工资的总额

Select deptno,job ,sum(sal) from emp

Group by deptno,job;



-------------------------------------------------------

Having子句的使用:(过滤分组后的数据)

平均工资大于2000的部门

Select deptno,avg(sal)

From emp

Having  avg(sql)>2000;

 

Where和having的区别:

在where子句后面不能使用分组函数

 

Where和having可以通用的情况(没有分组函数的情况下可以通用,但是从

Sql优化的角度上考虑,尽量使用where):

查询10号部门的平均工资

1.      Where

Select deptno,avg(sal) from emp wheredeptno=10 group by deptno

 

2.      Having

Select deptno,avg(sal) from empgroup by deptno having deptno=10

-----------------------------------------------------------------------------

在分组函数中使用orderby 排序(默认是asc升序)

1.Select deptno ,avg(sal)

From emp

Group by deptno

Order by avg(sal)

2.

Select deptno ,avg(sal)

From emp

Group by deptno

Order by 2—这里的2代表select语句后面的第二列,这里即avg(sal)

----------------------------------------------------------------------------

分组函数的嵌套

Select  max(avg(sal))

From emp

Group by deptno;

-----------------------------------------------------------------------

Group by 语句的增强:

(1)Selext deptno,job,sum(sal)

From emp

Group by deptno,job

 

(2)Select deptno,sum(sal)

From emp

Having deptno

 

(3)Select sum(sal) from emp

 等价于(1)+(2)+(3)

Select deptno,job,sum(sal) from emp group byrollup(deptno,job);

语法:

Group by rollup(a,b)

等价于:groupby a,b+group by  a+group by null

 

Break on deptno skip 2;--相同的部门号只显示一次,不同的部门号之间

跳过两行

--详细的可以看看sql-plus的报表功能

oracle分组函数

标签:oracle   having   分组函数   

热心网友 时间:2022-04-08 05:23

count ... group by当然只针对查询到的数据进行分组统计。在没有2016年4月的数据的情况下,结果集立面当然不会有其记录了。

如果确实需要,那么自己构建一个月份结果集(如2016年1月到2016年6月),然后与目前的统计结果做外连接,在没有统计数据的情况下将值写成0。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
世界气象组织对地面气象观测站的分布和类型有何统计? 气象仪器土壤温度 电脑为什么会出现一个小对话框然后黑屏? ...会出现黑屏 然后出现一个英文框 然后黑屏一下 在恢复 这是为什么... 我玩电脑游戏时 突然黑屏了然后出现了一个框里面有一句英语翻译后是输... ...玩英雄连好像改了屏幕大小,然后突然黑屏,出现个框在满屏幕走框里说... 今天在玩游戏时从桌面切入游戏时突然黑屏,然后出现这种对话框,到底是... ...刚进游戏就黑屏,然后弹出这样一个框(如图),哪位大神知道该怎么解决... 江苏海事职业技术学院宿舍费用为什么涨价 刘邦儿子除了刘盈和刘恒外 其他儿子又是什么下场 兄弟拜把子一条命是哪首歌中的歌词?? 破镜成圆是多少时空是哪首歌的歌词 批量修改文件夹内文件名称和文件名一样? 为什么全民K歌的耳机返听功能不适用于接入蓝牙设备的情况? 全民k歌中的耳机标志旁边的数字表示什么 如何在DOS下批量更改文件夹下的文件名?在线等! ren批量修改文件带多个点号的改不了 快手直播返听打开,起到什么做用,用声卡的时后候,返听打不打开呢 哪个大学考律师资格证容易些 律师资格证好考吗 南京有哪家专业的培训机构给推荐一下 以后想当法官或律师,哪个大学比较好?拜托了各位 谢谢 我想考律师资格证,应该到哪个机构?去读什么课程? 我长大想当律师,哪所学校的法律专业最好?哪个学校最有能力帮我实现这个梦想? 今年我31岁,我想考律师资格证,请问,到哪里考?哪里学?谁能帮帮我。 海信变频空调压力应该是多少?(求助) 自考大专律师哪个学校好 再的繁体字怎么写 有油漆铁门初期出污清理剂?谁能说说看? 我想当一名律师 考哪个学校好 《再接再厉》繁体字怎么写? 电视剧我的特一营插曲开头是贝斯的音乐 我是特种兵来生来世还做亲兄弟是什么歌 特一营电视剧里面有句歌词叫做(天上的太阳热烘烘,你是云来我就是风)这首歌名叫? 我的特一营电视剧里面女生哼的一首背景音乐叫什么名字 我的特一营41集营长牺牲时背景音乐是什么 有没有和 我的特一营——决斗 相似的音乐,里面没有人声 求;我的特一营歌曲主题曲 兄弟一条命 QQ背景音乐MP3链接地址 水井黄泥水怎么处理变清水? 家用水井打好后如何处理 深圳有哪些做监控摄像头的厂家呢? 深圳哪家监控摄像机做的比较好 鸡蛋具体有多少种作为菜系 网络摄像机哪家比较好? 寻找深圳做得比较好的网络摄像机(ip camera)厂家 深圳所有做安防摄像机的企业有哪些? 深圳那几家摄像头公司好??? 深圳市海雀科技有限公司与华为是什么关系 深圳市夜狼天下安防科技有限公司怎么样? 湖南知名的活动策划公司有哪些? 09最新的韩剧