본문 바로가기
Programming/오라클[SQL]

오라클[sql] 연습문제

by 콩king 2022. 8. 21.

연습문제

 

1. 20번 부서에서 근무하는 사원의 사원번호, 이름, 부서번호 출력

SELECT empno, ename, deptno

FROM emp

WHERE deptno = 20;

 

2. 입사일이 82/01/01에서 82/06/01인 사원의 사원번호, 이름, 입사일을 출력

SELECT empno, ename, hiredate

FROM emp

WHERE hiredate BETWEEN '820101' and '820601';

 

SELECT empno, ename, hiredate

FROM emp

WHERE hiredate >= '820101'

  AND hiredate <= '820601';

 

3. 담당업무가 salesman, clerk인 사원들의 이름과 업무를 출력

SELECT ename, job

FROM emp

WHERE job IN('SALESMAN', 'CLERK');

 

SELECT ename, job

FROM emp

WHERE job = 'SALESMAN'

  OR job ='CLERK';

 

4. 업무가 president이고 급여가 1500이상이거나 업무가 salesman인 사원의 정보를 출력

SELECT * FROM emp

WHERE (job = 'PRESIDENT' AND sal >= 1500) OR (job='SALESMAN');

 

SELECT ename, job, sal

FROM emp

WHERE (job = 'PRESIDENT' AND sal >= 1500) OR (job='SALESMAN');

 

5. 업무가 president 또는 salesman이고 급여가 1500이상인 사원의 정보를 출력

SELECT * FROM emp

WHERE job IN( 'PRESIDENT', 'SALESMAN') AND sal>1500;

 

SELECT ename, job, sal

FROM emp

WHERE (job='PRESIDENT' OR job='SALESMAN') AND sal>1500;

 

6. 커미션(comm)이 없는 사원의 이름, 급여, 커미션을 출력

SELECT ename, sal, comm

FROM emp

WHERE comm IS NULL;

 

SELECT ename, sal, comm

FROM emp

WHERE NVL(comm, 0) = 0;

 

7. 사원명, 급여, 커미션, 총급여( 급여 + 커미션)을 출력

SELECT ename, sal, comm, sal+comm

FROM emp;

 

-- null 때문에 더해지지 않음.

-- NVL() / NVL2() : 데이터베이스에서는 null 아무것도 없는 값 > 산술식이 고장납니다.

-- NVL(컬럼, null일경우변환값)

-- NVL2(컬럼, null이아닐경우반환값, null일경우반환값)

 

SELECT ename, sal, comm, sal+NVL(comm, 0)

FROM emp;

 

8. 이름 A로 시작하는 사원명 출력

SELECT * FROM emp

WHERE ename like 'A%';

 

9. 이름이 두번째 문자가 L인 사원명 출력

SELECT * FROM emp

WHERE ename like '_L%';

 

10. 이름에 L이 두 번 이상 포함된 사원명 출력

SELECT * FROM emp

WHERE ename like '%L%L%';

 

11. 보너스가 급여보다 10%가 많은 모든 사원에 대해 이름, 급여, 보너스를 출력

SELECT * FROM emp

WHERE comm >= sal*1.1;

 

12. 업무가 clerk이거나 analyst이고 급여가 1000, 3000, 5000이 아닌 모든 사원의정보를출력

SELECT * FROM emp

WHERE job IN( 'CLERK', 'ANALYST')

AND sal NOT IN(1000, 3000, 5000);

 

13. 부서가 30이거나 또는 관리자가 7782인 사원의 모든 정보를 출력

SELECT * FROM emp

WHERE deptno = 30 OR mgr=7782;

14.커미션이 높은 순으로 정렬  (단, 커미션이 없으면 제일 나중에 출력되도록 )

SELECT * FROM emp

ORDER BY comm DESC NULLS LAST;

댓글