Oracle的emp表的基本函数学习

--1.	找出各月倒数第3天受雇的所有员工
select * 
  from emp
    where to_char(hiredate,'dd')=to_char(last_day(hiredate),'dd')-2;

--2.	找出早于12年前受雇的员工
select ename 
  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.	显示所有员工的姓名,加入公司的年份和月份,按受雇日期所在的月排序,若月份相同,则将最早年份排在最前面
select ename,to_char(hiredate,'yyyy')||'年' "年",to_char(hiredate,'mm') ||'月' "月" 
  from emp
    order by to_number(to_char(hiredate,'mm')),to_number(to_char (hiredate,'yyyy'));

--8.	显示一个月为30天的情况所员工的日薪金,忽略余数
select ename "姓名",round((sal+nvl(comm,0))/30,0) "日薪" 
  from emp;

--9.	找出在(任何年份)2月受聘的所有员工
select ename ,hiredate 
  from emp
    where  to_char(hiredate,'mm')=2;

--10.	对每个员工,显示其加入公司的天数
select ename, round(months_between(sysdate,hiredate),0)*30
  from emp;
 
--11.	以年月日方式显示所有员工的服务年限
select ename, (trunc((months_between(sysdate,hiredate)*30)/(30*12),0)) "年",
trunc(mod(months_between(sysdate,hiredate)*30,360)/30,0) "月",
trunc(mod((months_between(sysdate,hiredate))*30,30),0) "日"
  from emp;

猜你喜欢

转载自blog.csdn.net/hongdeng123/article/details/52778399