[DataBase]2장_실습문제_2

존진·2023년 10월 18일

1. 부서번호가 20인 부서의 시간당 임금을 계산하여 출력하시오.

단, 1달의 근무일수는 12일이고, 1일 근무시간은 5시간이다.
출력양식은 이름, 급여, 시간당 임금(소수이하 첫 번째 자리에서 반올림)을 출력하라.

SELECT ename, sal, ROUND((sal/60),1) "시간당 임금"
FROM emp
WHERE deptno='20';


2. 급여가 2,000 이상인 모든 사람은 급여의 15%를 경조비로 내기로 하였다. 이름, 급여, 경조금(소수점 이하 절삭)를 출력하시오.

SELECT ename, sal, TRUNC(sal*0.15) "경조금"
FROM emp
WHERE sal>=2000;


3. 사원 테이블에서 사원 번호, 이름, 현재일, 입사일, 근무년수, 근무월수, 근무주수, 근무일수(소수점 이하 절삭)를 출력하시오.

--3
SELECT empno, ename, SYSDATE, hiredate,
TRUNC((SYSDATE-hiredate)/365) "근무년수",
TRUNC(MONTHS_BETWEEN(SYSDATE,hiredate)) "근무월수",
TRUNC((SYSDATE-hiredate)/7) "근무주수",
TRUNC(SYSDATE-hiredate) "근무일수"
FROM emp;


4. 사원 번호, 사원 이름, 입사일과 입사일로부터 6개월이 지난 후의 날짜를 출력하시오.

SELECT empno, ename, hiredate, ADD_MONTHS(hiredate,6)"6개월 후"
FROM emp;


5. 입사한 달의 근무 일수를 계산하여 사원 번호, 이름, 근무 일수를 출력하시오.

SELECT empno, ename,(LAST_DAY(hiredate)-hiredate)+1 "근무일수"
FROM emp;


6. 사원 중에서 1981년도에 입사한 사람들을 출력하시오.

SELECT *
FROM emp
WHERE TO_CHAR(hiredate,'YYYY')='1981';


7. 모든 사원의 입사일 다음에 처음 돌아오는 월요일의 날짜를 구하시오.

SELECT hiredate, NEXT_DAY(hiredate,'월요일') "돌아오는 월요일"
FROM emp;


8. 입사일을 ‘1996-5-14’의 형태로 이름, 입사일을 출력하시오.

SELECT hiredate, TO_CHAR(hiredate,'yyyy-mm-dd') "입사일"
FROM emp;


9. emp테이블을 조회하여 사원들의 empno, ename, hiredate, 총 연봉, 15% 인상 후 연봉을 아래 화면처럼 출력하시오. 단 총 연봉은(sal*12)+comm으로 계산하고 아래 화면에서는 SAL로 출력되었으며 15% 인상한 값은 총 연봉의 15% 인상 값이다. 단, comm 값이 NULL 인 사원들은 comm 값을 0으로 계산하시오. (HIREDATE 컬럼의 날짜 형식과 SAL 컬럼, 15% UP 컬럼의 $ 표시와 , 기호 나오게 하세요)

SELECT empno, ename, TO_CHAR(hiredate,'yyyy-mm-dd') "HIREDATE",TO_CHAR((sal*12)+NVL(comm,0),'$99,999') "총 연봉(SAL)",
TO_CHAR((((sal*12)+NVL(comm,0))*0.15)+(sal*12)+NVL(comm,0),'$99,999') "15% UP"
FROM emp;

0개의 댓글