Oracle统计函数 (学习笔记)

count(*),count([distinct] 列名),sum(),avg(),max(),min().
例如:要求计算雇员的平均服务年限:
select trunc(avg(months_between(sysdate,hiredate)/12)) from emp;

分组查询:
    例如:统计出每个职位的名称,人数,平均工资:
select job,count(*),avg(sal)
from emp
group by job;

 统计限制:
    限制一:在没有编写group by 子句,表示全表分组,此时select子句中只允许出现统计函数,不允许出现其他字段。
错误代码:select count(ename),ename from emp;
    限制二:在使用group by 子句分组的时候,select子句中只允许出现分组字段与统计函数,其他字段不允许出现。
错误代码:select job,count(ename),ename from emp group by job;
    限制三:统计函数允许嵌套,但是嵌套后select中不允许再出现任何字段,包括分组字段。
错误代码:select deptno,max(avg(sal))
from emp
group by deptno;

where 子句上不允许使用统计函数,原因:where是在group by之前使用的,属于分组前的数据筛选。
having :  进行分组后的过滤

  例如:select job,avg(sal) from emp group by job having avg(sal)>2000;

显示非销售人员的工作名称以及从事同一工作雇员的工资的总和,并且要满足从事同一工作的雇员的工资>5000,输出结果按月工资的合计升序排序
select job,sum(sal) sum from emp where job<>'salsman' group by job having sum(sal)>5000 order by sum asc;































  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值