본문 바로가기
국비 과정/Oracle DataBase

DB - 0823 예제

by 코딩호야 2022. 8. 23.

BETWEEN ~ AND

Q ] 급여가 2000~3000 사이의 사원을 검색하는 쿼리문

A ] select * from emp where sal BETWEEN 2000 AND 3000;

 

IN

Q ] 커미션이 300 혹은 500 혹은 1400 인 사원이 있는지 검색하시요

A ] select * from emp where comm = 300 or comm = 500 or comm 1400;
A ] select * from emp where comm IN(300,500,1400);

 

 

Q ] 커미션이 300 혹은 500 혹은 1400 이 아닌 사원이 있는지 검색하시요
A ] select * from emp where NVL(comm,0) NOT IN(300,500,1400);

 

 

Q ] 사원이름이 ford 인 사원의 이름 , 월급 , 입사일 출력


A ]  select ename , sal , hiredate from emp where ename = 'FORD';
A ]  select ename 이름 , sal 월급  , hiredate 입사일 from emp where ename = 'FORD';

 

 

와일드 카드 , LIKE

 

Q ] 이름의 마지막 글자가 ' n ' 인 사원들을 출력하시요.
A ] select * from emp where ename LIKE ' %N ' ;


 

 Q ] 이름의 첫번째 글자가 ' t ' 인 사원의 이름과 월급 , 부서번호를 출력하시요.
 A ]  select ename , sal , deptno from emp where ename LIKE ' T%';

 
 Q ] 이름에 'A' 을 갖고있는 사원들을 출력
 A ] select * from emp where ename LIKE '%A%';


 Q ] 이름이 5자인 사원들 출력
 A ] select * from emp where ename LIKE '_____';      // 언더바 5개


 Q ] 이름의 3번째 글자가 R 이고 30번 부서에 근무하는 사원 출력
 A ] select * from emp where ename LIKE '__R%' and deptno = 30;



 Q ] 커미션이 300 500이 아니고 사원 번호 세번째가 9 인 사원 모두출력^^^
 A ] select * from emp where NVL(comm,0) NOT IN(300,500) and empno LIKE '__9%';



 Q ] 입사일이 81/04/02 인 사원의 월급을 500원 인상
 A ] select ename "이름" , sal "월급" , sal + 500 "인상된 월급" from emp
 where hiredate = '81/04/02';

 

NULL 

 

 Q ]  커미션을 받지않는 사원들을 출력
 A ] select * from emp where comm IS NULL

 Q ] 커미션을 받는 사람
 A ] select * from emp where comm IS NOT NULL

 

DISTINCT  

 

Q ]  emp 테이블에서 직급(job)이 중복되어 출력되지 않는 결과를 출력하시요.
A ] select DISTINCT job from emp;



 Q ] emp 테이블에서 보너스를 받는 사원중에 500과 1400이 아닌 사원들의 이름과 보너스 금액출력하시요
 A ] select ename , comm from emp where comm IS NOT NULL and comm NOT IN(500,1400);


 Q ] 30번 부서의 사원들의 연봉을 20% 인상한후 이름 , 부서번호, 월급 , 인상된 연봉 순으로 출력 
 A ] select ename "이름", deptno " 부서번호" , sal "월급" , sal*12*1.2 "인상된 연봉" 
 from emp   where deptno = 30;

 

종합 


Q ] emp 테이블에서 이 회사의 사장의 이름과 부서번호 직급을 출력하는 쿼리문을 작성하시오

A ] select ename "사장의이름" , deptno "부서번호" , job "직급" from emp 
where mgr IS NULL;

 

Q ] emp 테이블의 사원중에서 커미션을 받지않는 사원의 월급을 15% 인상한 금액을
이름 , 월급 , 인상한 월급으로 출력하시오.

A ] select ename 이름 , sal 월급 , sal*1.15 인상한월급 from emp
 where comm IS NULL ;



 Q ] emp 테이블의 사원중에서 커미션을 받지않는 사원의 월급을 15% 인상한 금액을
이름 , 월급 , 인상한 월급으로 출력하시오.( 커미션 0도 출력 )

 

A ]  select ename 이름 , sal 월급 , sal*1.15 인상한월급 , comm from emp 
 where comm IS NULL or comm = 0 ;
A ] select ename 이름 , sal 월급 , sal*1.15 인상한월급 , comm from emp 
 where NVL(comm,0) = 0 ;

 Q ] emp 테이블 에서 이름에 'LA' 가 들어있지 않은 사원의 이름, 월급 , 입사일을 출력하시오
 A ] select ename,sal,hiredate from emp where ename NOT LIKE '%LA%';

 Q ] emp 테이블에서 이름의 세번째 글자가 'R' 이고 다섯번째 글자가 'E'인 
 사원의 이름 , 월급 , 연봉을 35% 인상한 금액을 추출하는 쿼리문작성 하시오.

 A ]  select ename , sal , sal*12*1.35 from emp 
 where ename LIKE '__R_E%';

 Q ] 사원이름 'TI' 가 있는 사원과 첫번째 글자가 'S'로 시작하는 사원들의
 이름, 월급 , 직급을 출력하시오.

 A ] select ename ,sal , job from emp where ename LIKE '%TI%' or ename LIKE 'S%';



ORDER  BY 절

 

Q ] 사원들의 급여를 오름차순으로 정렬하는 쿼리문을 작성하시요.
A ] select * from emp ORDER BY sal ASC;


Q ] 가장 최근 입사한 사람부터 나오는 쿼리문을 작성하시요.
 A ] select * from emp ORDER BY hiredate DESC;


Q ] emp 테이블에서 급여가 많은 사원부터 출력하되 급여가 1600이상인 사원만 출력하세요.
A ] select * from emp where sal >= 1600 ORDER BY sal DESC;


Q ] 부서번호가 빠른 사원부터 출력하되 같은 부서내 사원들은 최근에 입사한 사원부터 출력하세요.
A ] select ename , deptno , hiredate from emp ORDER BY deptno ASC ,hiredate DESC;


Q ] 입사일이 81년 6월 1일 이후에 입사한 사원들을 출력하되 최근에 입사한 사원을 먼저 나오게하세요.
A ] select * from emp where hiredate >= '81/06/01' ORDER BY hiredate DESC