--14.列出所有雇员的雇员名称、部门名称和薪金。
select e.ename,d.dname,e.sal from emp e,dept d where e.deptno = d.deptno;
--16.列出分配有雇员数量的所有部门的详细信息即使是分配有0个雇员。
select d.deptno,d.dname,d.loc,nvl(e.namenum,0) from(select deptno,count(ename) namenum from emp group by deptno) e,dept d where e.deptno(+)=d.deptno;
--17.列出各种类别工作的最低工资。
select job,min(sal+nvl(comm,0)) from emp group by job;
--18.列出各个部门的MANAGER(经理)的最低薪金。
select min(sal) from emp where job='MANAGER';
--19.列出按计算的字段排序的所有雇员的年薪。
select ename,sal*12 tsal from emp order by tsal asc;
--第三部分:
--1.找出各月倒数第3天受雇的所有员工.
select ename,hiredate from emp where hiredate = last_day(hiredate)-2;
select hiredate from emp;
--2.找出早于12年前受雇的员工.
select ename,hiredate from emp where Months_between(sysdate,hiredate)/12>12;
--3.以首字母大写的方式显示所有员工的姓名.
select initcap(ename) from emp;
--4.显示正好为5个字符的员工的姓名.
select ename from emp where length(ename)=5;
--5.显示不带有"R"的员工的姓名
select ename from emp where ename not like '%R%';
--6.显示所有员工姓名的前三个字符.
select Substr(ename,1,3) from emp;
--7.显示所有员工的姓名,用a替换所有"A"
select replace(ename,'A','a') from emp;
--8.显示满10年服务年限的员工的姓名和受雇日期.:
select ename,hiredate from emp where Months_between(sysdate,hiredate)/12 >10;
--9.显示员工的详细资料,按姓名排序.
select * from emp order by ename;
--10.显示员工的姓名和受雇日期,根据其服务年限,将最老的员工排在最前面.
select ename,hiredate,Months_between(sysdate,hiredate)/12 worktime from emp order by worktime desc;
--11.显示所有员工的姓名、工作和薪金,按工作的降序排序,若工作相同则按薪金排序.
select ename,job,sal from emp order by job desc,sal desc;
--12.显示所有员工的姓名、加入公司的年份和月份,按受雇日期所在月排序,若月份相同则将最早年份的员工排在最前面.
select ename,to_char(hiredate,'yyyy') "年份",to_char(hiredate,'mm') "月份" from emp order by '月份' asc,'年份';
--13.显示在一个月为30天的情况所有员工的日薪金,忽略余数.
select ename,trunc(sal/30) from emp;
--14.找出在(任何年份的)2月受聘的所有员工。
select ename,hiredate from emp where to_char(hiredate,'mm') =2; --to_number
--15.对于每个员工,显示其加入公司的天数.
select ename,trunc(sysdate-hiredate) from emp;
--16.显示姓名字段的任何位置包含"A"的所有员工的姓名.
select ename from emp where ename like '%A%';
17.以年月日的方式显示所有员工的服务年限. (大概)
select ename,
trunc((sysdate - hiredate) / 365) "年",
trunc(mod((sysdate - hiredate),365) / 30) "月",
trunc(mod(mod((sysdate - hiredate),365),30)) "日"
from emp