# 문제풀이에 사용된 함수
= ROUND() / SYSDATE / MONTHS_BETWEEN / TRUNC() / TO_CHAR() / NVL()
- --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 "근무연차"
- FROM EMP;
- --35)emp테이블에서 사원이름, 월급, 월급과 커미션을 더한 값을 컬럼명 실급여라고 해서 출력.
- --단, NULL값은 나타나지 않게 작성하시오.
- SELECT
- ENAME,SAL,SAL+COMM AS "실급여"
- FROM EMP
- WHERE SAL+COMM IS NOT NULL;
- --36)월급과 커미션을 합친 금액이 2,000이상인 급여를 받는 사원의
- --이름,업무,월급,커미션,고용날짜를 출력하시오.
- --단, 고용날짜는 1980-12-17 형태로 출력하시오.
- SELECT
- A.ENAME,A.JOB,A.SAL "월급",B."COMM" "보너스",(A.SAL+B."COMM") "실급여"
- ,TO_CHAR(A.HIREDATE, 'YYYY-MM-DD') "HIREDATE"
- FROM EMP A ,(SELECT
- EMPNO,SAL,NVL(COMM,0) "COMM"
- FROM EMP) B
- WHERE A.EMPNO = B.EMPNO
- AND A.SAL+B."COMM" > 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 '기타'
- END AS "등급"
- FROM EMP;
- --(HR 계정) 먼저 입사한 사원순으로 작성해서 11 ~ 20번째 사원의 정보를 출력하시오
- SELECT
- RNUM,FIRST_NAME,JOB_ID,HIRE_DATE
- FROM
- (SELECT
- ROWNUM AS "RNUM", -- 2.ROWNUM
- EMP.FIRST_NAME,
- EMP.JOB_ID,
- EMP.HIRE_DATE
- FROM
- (SELECT
- FIRST_NAME,JOB_ID,HIRE_DATE -- 1.정렬
- FROM EMPLOYEES
- ORDER BY HIRE_DATE ASC) EMP)
- WHERE RNUM >=10 AND RNUM <= 20;
'오랜된 포스팅 > SQL Developer' 카테고리의 다른 글
SQL developer 새로운 계정만들기 (0) | 2018.11.14 |
---|---|
SQL Developer 기본문제 풀이 (0) | 2018.06.28 |
SQL Developer 기본문제 풀이 SCOTT (+SUB QUERY) (0) | 2018.06.23 |
SQL Developer 기본문제 풀이 SCOTT (+JOIN) (0) | 2018.06.23 |
SQL Developer 기본문제 풀이 SCOTT (+ORDER BY) (0) | 2018.06.23 |