甲骨文系列:(12)多行函数

  



函数:甲骨文服务器先事写好的一段具有一定功能的程序片段,内置于oracle服务器,供用户调用,

单行函数:输入一个参数,输出一个结果,例如:上(“baidu.com”)→baidu.com

多行函数:输入多个参数,或者是内部扫描多次,输出一个结果,例如:count (*)→14


统计emp表中员工总人数

select  count(*),得到电磁脉冲;

*号适用于表字段较少的情况下,如果字段较多,扫描时间,多效率低、项目中提倡使用某一个非零唯一的字段,通常是主键,


统计公司有多少个不重复的部门

select 计数(distinct  deptno),得到电磁脉冲;

甲骨文系列:(12)多行函数


统计有佣金的员工人数

select 计数(通讯),得到电磁脉冲;

注意:今天讲的这些多个行函数,不统计零值

甲骨文系列:(12)多行函数


员工总工资,平均工资,四舍五入,保留小数点后0位

select 和(sal),“总工资”,圆(avg (sal), 0),“平均工资”   得到电磁脉冲;

甲骨文系列:(12)多行函数


查询员工表中最高工资,最低工资

select 马克斯(sal),“最高工资”,min (sal),“最低工资”   得到电磁脉冲;



入职最早,入职最晚员工

select 马克斯(hiredate),“最晚入职时间”,min (hiredate),“最早入职时间”   得到电磁脉冲;



按部门求出该部门平均工资,且平均工资取整数,采用截断

select  deptno “部门编号”,trunc (avg (sal), 0),“部门平均工资”   得到电磁脉冲   group  by  deptno;

甲骨文系列:(12)多行函数


(继续)查询部门平均工资大于2000元的部门

select  deptno “部门编号”,trunc (avg (sal), 0),“部门平均工资”   得到电磁脉冲   group  by  deptno   having  trunc (avg (sal), 0),祝辞,2000;

甲骨文系列:(12)多行函数


(继续)按部门平均工资降序排列

select  deptno “部门编号”,trunc (avg (sal), 0),“部门平均工资”   得到电磁脉冲   group  by  deptno   having  trunc (avg (sal), 0),在2000年   order  by  2, desc;

甲骨文系列:(12)多行函数


除10号部门外,查询部门平均工资大于2000元的部门,方式一【deptno<在10】

select  deptno, avg (sal)   得到电磁脉冲   group  by  deptno   having  deptno<在10;


除10号部门外,查询部门平均工资大于2000元的部门,方式二【deptno<在10】【推荐】

select  deptno, avg (sal)   得到电磁脉冲   where  deptno<在10   group  by  deptno;



显示部门平均工资的最大值

select 马克斯(avg (sal)),“部门平均工资的最大值”   得到电磁脉冲   group  by  deptno;

甲骨文系列:(12)多行函数


<强>思考:显示部门平均工资的最大值和该部门编的号吗?

选择马克斯(avg (sal))“部门平均工资的最大值”,deptno”部门编号”从emp

group by deptno;

错误



group by子句的细节:

1)在select子句中出现的非多行函数的所有列,【必须】出现在group by子句中

2)在group by子句中出现的所有列,【可出现,可不现】在select子句中


,和拥有的区别:

甲骨文系列:(12)多行函数