1.모든사원의 사원번호, 이름, 급여, 부서 번호를 출력하여라.
SELECT ename, sal, deptno
FROM emp;
2.모든 사원의 이름, 급여, 커미션, 총액(급여+커미션)을 구하여 총액이 많은 순서로 출력하여라(단,커미션이 null인 사원도 0으로해서 포함하여라.).
SELECT ename, sal, NVL(comm,0) AS "comm", sal+NVL(comm,0) AS "총액"
FROM emp
ORDER BY sal+NVL(comm,0) DESC;
3.10번부서의 모든 사원에게 급여의 13%를 보너스로 지불하기로 하였다. 10번부서 사원들의 이름,급여,보너스 금액,부서번호를 출력하여라.
SELECT ename, sal, sal*1.13, deptno
FROM emp
WHERE deptno =10;
4.급여가 $1,500부터$3,000 사이의 사원에 대해서만 급여의 15%를 회비로 지불하기로 하였다. 조건에 해당되는 사원의 이름,급여,회비(소수이하 2자리까지 반올림)를 출력하여라.
SELECT ename, sal, ROUND(sal*0.15,2) AS "회비"
FROM emp
WHERE sal >1500
AND sal <3000;
5.모든 사원의 부서번호, 이름, 입사일, 현재일, 입사일부터 현재까지의 근무 일 수(소수점 이하 절삭),근무 년 수, 근무 월 수(30일 기준), 근무 주수를 출력하여라.
SELECT deptno, ename, hiredate, sysdate, TRUNC(sysdate-hiredate), 모르겟음
6.모든 사원에 대해 입사일로부터 90일이 지난 후의 날짜를 계산해서 이름, 입사일, 90일 후의 날짜,급여를 출력하여라.
SELECT ename, hiredate, hiredate+90 AS "입사일+90일",sal
FROM emp;
7.모든 사원에 대해 입사한 달의 근 무 일수를 계산하여 부서 번호, 이름, 근무 일 수를 출력하여라.
SELECT deptno,ename, LAST_DAY(hiredate)-hiredate AS "입사한달 근무일수"
FROM emp;
8.모든 사원에 대해 입사한 날로부터 60일이 지난 후의 '월요일'이 몇 년,몇 월,몇 일인지를 구하여 이름, 입사일, 60일 후의 '월요일' 날짜를 출력하여라.
SELECT TO_CHAR(NEXT_DAY(hiredate+60,'월'),'yyyy-mm-dd')
FROM emp;
9.이름의 글자수가 6자 이상인 사원의 이름을 앞에서 3자만 구하여 소문자로 이름만 출력하여라.
SELECT lower(SUBSTR(ename,1,3))
FROM emp
WHERE LENGTH(ename) >= 6;
10.모든 사원에 대해 사원의 이름은 앞에서 세 글자만 대문자로, 업무는 소문자로 하여 이름, 직무, 부서 번호를 출력하여라.
SELECT UPPER(SUBSTR(ename,1,3))||lower(SUBSTR(ename,4)) AS "ename", job, deptno
FROM emp;
11.모든 사원에 대해 사원의 이름과 부서 번호를 합성시켜 "연결예제"라는 HEADING으로 출력하여라.
SELECT ename||'의 부서번호는 '||deptno||' 이다.' AS "연결예제"
FROM emp;
12.사원의 직무가 'SAL'로 시작하는 사원의 이름과 사원 이름의 길이를 출력하여라.
SELECT ename,LENGTH(ename) FROM emp
WHERE job LIKE 'SAL%';
13.이름의 두 번째 글자가 'A'인 사원들의 이름과 직무를 출력하여라(단, 직무는 앞에서부터 세 글자로 줄여 표시하여라.).
SELECT ename, SUBSTR(job,1,3)
FROM emp
WHERE ename LIKE '_A%';
14.현재의 7일전과 7일후, 그리고 30일이 지난 후의 첫 번째 월요일을 출력하여라.
SELECT NEXT_DAY(sysdate-7,'월') AS "7일전",NEXT_DAY(sysdate+7,'월') AS "7일후",NEXT_DAY(sysdate+30,'월') AS "30일후"
FROM emp;
15.직무가 'CLERK'인 사원들의 사원 번호, 이름, 급여를 표시하여라(단, 급여는 1000단위마다 콤마(,)를 찍고 앞에는 국가별 화폐단위를 붙여 표시하여라.).
SELECT empno, ename, TO_CHAR(sal,'L999,999')
FROM emp
WHERE job=UPPER('clerk');
16.사원들의 사원 번호와 급여, 커미션,연봉((comm+sal)*12)을 연봉이 많은 순서로 출력하여라(단,커미션이 null인 사원도 0 으로 계산하여라.).
SELECT empno, sal, NVL(comm,0) AS "comm", ((NVL(comm,0)+sal)*12) AS "annual income"
FROM emp
ORDER BY ((NVL(comm,0)+sal)*12)
17.모든 사원에 대해 입사일로부터 6개월이 지난 후의 날짜를 계산해서 이름, 입사일, 6개월 후의 날짜를 출력하여라.
SELECT ename,hiredate, ADD_MONTHS(hiredate,6) AS "addmonths"
FROM emp;
18.모든 사원에 대해 사원들의 이름, 급여, 커미션을 급여가 적은 것부터 출력하여라(단, 커미션이 없는 사원은 'No Commission'이라는 말이 출력되게하여라.).
SELECT ename,sal, DECODE(comm,'','No Commission',comm)
FROM emp
ORDER BY sal ASC;
19.'CLERK'은 20%, 'SALESMAN'은 15%,'ANALYST'는 10%, 'MANAGER'는 5%, 'PRESIDENT' 는 0%와 같이 업무에 따라 급여인상을 다르게 할 경우, 모든 사원들의 이름, 직무, 급여, 인상 후의 급여를 출력하여라.
SELECT ename, job, sal, DECODE(job, 'CLERK', sal*1.20, 'SALESMAN', sal*1.15, 'ANALYST', sal*1.05, 'PRESIDENT', sal*1.0, sal)
FROM emp;
20. 모든 사원들의 입사한 년도와 입사한 달을 출력하여라.
SELECT TO_CHAR(hiredate,'yyyy')||'년도',TO_CHAR(hiredate,'mm')||'월'
FROM emp;
21.사원번호가 짝수인 사원들의 모든 정보를 출력하여라.
SELECT *
FROM emp
WHERE MOD(empno,2) = 0;
'연습문제' 카테고리의 다른 글
예제 따라가며 쉽게 배우는 오라클 연습문제 6 (0) | 2016.08.29 |
---|---|
예제 따라가며 쉽게 배우는 오라클 연습문제 5 (0) | 2016.08.29 |
예제 따라가며 쉽게 배우는 오라클 연습문제 4 (0) | 2016.08.28 |
예제 따라가며 쉽게 배우는 오라클 연습문제 3 (1) | 2016.08.18 |
예제 따라가며 쉽게 배우는 오라클 연습문제 1 (3) | 2016.08.10 |