1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | -- 33) 각 사원의 이름을 표시하고 근무 달 수(입사일로부터 현재까지의 달수)를 계산하여 -- 열 레이블을 MONTHS_WORKED로 지정하시오. 결과는 정수로 반올림하여 표시하고 근무달 수를 -- 기준으로 오름차순으로 정렬하시오.(MONTHS_BETWEEN 참고) SELECT ENAME,ROUND(MONTHS_BETWEEN(SYSDATE,HIREDATE)) AS MONTHS_WORKED FROM EMP ORDER BY MONTHS_WORKED ASC; -- 34)emp테이블에서 이름, 업무, 근무연차를 출력하시오. SELECT ENAME,JOB,TRUNC(MONTHS_BETWEEN(SYSDATE,HIREDATE)/12) AS YERRS_WORKED FROM EMP; -- 35)emp테이블에서 사원이름, 월급, 월급과 커미션을 더한 값을 컬럼명 실급여라고 해서 출력. -- 단, NULL값은 나타나지 않게 작성하시오. SELECT ENAME, SAL, SAL+NVL(COMM,0) AS "실급여" FROM EMP; -- 36)월급과 커미션을 합친 금액이 2,000이상인 급여를 받는 사원의 이름,업무,월급,커미션,고용날짜 -- 를 출력하시오. 단, 고용날짜는 1980-12-17 형태로 출력하시오. SELECT ENAME,JOB,SAL,COMM,TO_CHAR(HIREDATE,'YYYY-MM-DD') AS "고용날짜",SAL+NVL(COMM,0) AS "실급여" FROM EMP WHERE SAL+NVL(COMM,0) >= 2000; -- 37)DECODE 또는 CASE WHEN THEN 함수를 사용하여 다음 데이터에 따라 JOB열의 값을 기준으로 -- 모든 사원의 등급을 표시하시오. /* 업무 등급 PRESIDENT A ANALYST B MANAGER C SALESMAN D CLERK E 기타 0 */ SELECT ENAME,JOB, CASE JOB WHEN 'PRESIDENT' THEN 'A' WHEN 'ANALYST' THEN 'B' WHEN 'MANAGER' THEN 'C' WHEN 'SALESMAN' THEN 'D' WHEN 'CLERK' THEN 'E' ELSE '0' END AS "등급" FROM EMP; SELECT ENAME,JOB, DECODE(JOB, 'PRESIDENT', 'A', 'ANALYST', 'B', 'MANAGER', 'C', 'SALESMAN', 'D', 'CLERK', 'E', '0') AS "등급" FROM EMP; -- 추가문제< hr > --먼저 입사한 사원순으로 작성해서 11 ~ 20번째 사원의 정보를 출력하시오 SELECT * FROM (SELECT ROWNUM AS RNUM,EMPLOYEE_ID,LAST_NAME,SALARY,JOB_ID,MANAGER_ID,HIRE_DATE FROM (SELECT EMPLOYEE_ID,LAST_NAME,SALARY,JOB_ID,MANAGER_ID,HIRE_DATE FROM EMPLOYEES ORDER BY HIRE_DATE) EMP) WHERE RNUM BETWEEN 11 AND 20; | cs |
'IT Study > Database-Oracle' 카테고리의 다른 글
제약 조건 정리 (0) | 2018.06.27 |
---|---|
Table (0) | 2018.06.27 |
특수 Query (0) | 2018.06.25 |
SubQuery 예제(scott) (0) | 2018.06.22 |
SubQuery 예제(hr) (0) | 2018.06.22 |