oracle 11g 列函数与分组

本文详细介绍了Oracle11g数据库中列函数的使用,包括SUM、MAX、MIN、COUNT等,并结合GROUP BY和HAVING子句进行分组查询。示例查询了员工的记录数、工资总和、平均工资、最高和最低工资。同时,通过分组查询展示了如何按部门统计人数、平均工资和年薪。HAVING子句用于筛选满足特定条件的分组结果,如平均工资大于8000的部门。文章还提及了ROLLUP和CUBE操作在生成小计和总计中的应用。

oracle 11g 列函数与 分组

1.列函数

1.1 常用列函数的使用

2. 分组

2.1 分组的概念

2.2 GROUP BY子句的使用

2.3 HAVING 子句的使用

3 常用的函数使用

3.1 SUM(expression) 求和

3.2 MAX(expression) 最大值

3.3 MIN(expression) 最小值

3.4 COUNT(expression) 统计记录数

3.5 COUNT(DISDINCT COLNAME) 统计去除重复记录数

4.查询员工的记录数,员工工资的总和,平均工资,最高工资,最低工资

select   count(empno),  ---记录数
			sum(sal),  --工资求和
			AVG(sal),  --平均工资
			max(sal), --最大工资
			min(sal)  --最小工资
from   bank_emp ;

5.分组的概念 在一个实体集emp当中,(每一个实体相当于一个记录),都有自己的属性可以按不同的属性进行分组。 比如:在一教室里有很多的学生,如果按性别进行分组的话,是不是分为男生和女生

语法格式:
select   列名,列函数
  from 表名
  group by  列名
  order  by  列名

5.1 查询每个部门的人数

select  distinct  empno  from  bank_emp;

5.2 使用分组来统计每个部门的人数 注意规则:如果在select子句中,有不在列函数的中的列,则该列一定要出现在group by 之后

selct  deptno  cont(empno),sum(sql)
 from  bank_emp
 group  by  deptno;

5.3 练习

5.3.1 查询每个部门的平均工资

select    deptno,avg(sql)  
from  bank_emp
group  by   deptno;

5.3.2 查询每个部门的年薪

select   deptno,sum(sql*12)  
from   bank_emp  
group by    deptno;

6.分组查询HAVING子句的使用

6.1 显示出平均工资大于8000的部门编号和平均工资

select  deptno,avg(sql*12)
from   bank_emp
group  by  deptno 
having   sum(sql*12)>8000;

6.2 总计与小计:rollup生成横向小计,cube生成纵向小计

select  deptno,job,avg(sql)
from  bank_emp
group  by   rollup(deptno,job);

6.3 显示非办事员(CLERK) 工作名称,以及从事同一工作雇员的月工资的总和,并且要满足雇员的月工资合计大于5000,输出结果按月工资合计升序排序

select   job,sum(sql)
from  emp
where  job <> 'CLERK'
group  by   sum(sql)
having sum(sql)>5000
order   by   sum(sql);
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值