概述
第四章 单行函数
1.计算2000年1月1日到现在有多少月,多少周(四舍五入)。
select round(months_between(sysdate,‘01-1月-2000’))月,
round((sysdate-to_date(‘2000-01-01’,‘YYYY-MM-DD’))/7)周
from dual;
2.查询员工ENAME的第三个字母是A的员工的信息(使用2个函数)。
select *
from emp
where ename like ‘__A%’;
字符处理函数:substr 截取指定长度的字符串(从指定位置3截取1个)
select *
from emp
where substr(ename,3,1)=‘A’;
字符处理函数:inster 返回子串在字符串中出现的位置(指定位置从开始数并且指定子串第几次出现)
select *
from emp
where instr(ename,‘A’,3)=3;
3.使用trim函数将字符串‘hello’、‘ Hello ’、‘bllb’、‘ hello ’分别处理得到下列字符串ello、Hello、ll、hello。
select trim(leading ‘h’ from ‘hello’),
trim(’ Hello ‘),
trim (both ‘b’ from ‘bllb’),
trim(’ hello ')
from dual;
4.将员工工资按如下格式显示:123,234.00 RMB 。
select to_char(sal, ‘999,999.99’) || ’ RMB’
from emp;
或 字符处理函数
select concat(to_char(sal, ‘999,999.99’), ’ RMB’)sal
from emp;
5.查询员工的姓名及其经理编号,要求对于没有经理的显示“No Manager”字符串。
select ename,
(
case
when mgr is not null
then to_char(mgr)
else ‘No Manager’
end
)mgr
from emp;
6.将员工的参加工作日期按如下格式显示:月份/年份。
select to_char(hiredate, ‘mm/yy’)hiredate
from emp;
7.在员工表中查询出员工的工资,并计算应交税款:如果工资小于1000,税率为0,如果工资大于等于1000并小于2000,税率为10%,如果工资大于等于2000并小于3000,税率为15%,如果工资大于等于3000,税率为20%。
select sal,
(
case
when sal < 1000
then 0
when sal >= 1000 and sal < 2000
then sal * 0.1
when sal >= 2000 and sal < 3000
then sal * 0.15
else
sal * 0.2
end
)应交税款
from emp;
8.创建一个查询显示所有雇员的 ename和 sal。格式化sal为 15 个字符长度,用 $ 左填充,列标签 SALARY。
select ename, lpad(sal, 15, ‘$’) SALARY
from emp;
第六章 分组函数
1.查询部门平均工资在2500元以上的部门名称及平均工资。
select d.dname 部门名称, avg(e.sal) 平均工资
from emp e, dept d
where e.deptno(+) = d.deptno
group by d.deptno, d.dname
having avg(e.sal) > 2500;
2.查询员工岗位中不是以“SA”开头并且平均工资在2500元以上的岗位及平均工资,并按平均工资降序排序。
select job 员工岗位, avg(sal) 平均工资
from emp
where ename not like ‘SA%’
group by job
having avg(sal) > 2500
order by avg(sal) desc;
3.查询部门人数在2人以上的部门名称、最低工资、最高工资,并对求得的工资进行四舍五入到整数位。
select d.dname 部门名称,
round(min(e.sal)) 最低工资,
round(max(e.sal)) 最高工资
from emp e, dept d
where e.deptno(+) = d.deptno
group by d.deptno, d.dname
having count(e.ename) > 2
order by d.deptno;
4.查询岗位不为SALESMAN,工资和大于等于2500的岗位及每种岗位的工资和。
select job 岗位, sum(sal) 工资和
from emp
group by job
having job <> ‘SALESMAN’
and sum(sal) >= 2500;
5.显示经理号码和经理姓名,这个经理所管理员工的最低工资,没有经理的KING也要显示,不包括最低工资小于3000的,按最低工资由高到低排序。
select mgr.empno 经理号码,
mgr.ename 经理姓名,
min(e.sal) 下属员工最低工资
from emp e, emp mgr
where e.mgr = mgr.empno(+)
group by mgr.empno, mgr.ename
having min(e.sal) >= 3000
order by min(e.sal) desc;
6.写一个查询,显示每个部门最高工资和最低工资的差额。
select max(e.sal) 部门最高工资,
min(e.sal) 部门最低工资,
(nvl(max(e.sal) - min(e.sal), 0)) 最高与最低工资的差额
from emp e, dept d
where e.deptno(+) = d.deptno
group by d.deptno
order by d.deptno;
最后
以上就是从容春天为你收集整理的Oracle复习题 自练 PART--2的全部内容,希望文章能够帮你解决Oracle复习题 自练 PART--2所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复