-- 5일차
--(7) 입사일부터 지금까지의 날짜수를 출력하라.
-- 부서 번호, 이름, 입사일, 현재일, 근무일수(소수점 이하 절삭),
-- 근무년수(반올림),근무월수(30일 기준,반올림), 근무주수(반올림)를 출력하라.
SELECT DEPTNO, ENAME, HIREDATE, SYSDATE, TRUNC(SYSDATE - HIREDATE) 근무일수, ROUND((SYSDATE-HIREDATE)/365) 근무년수, ROUND((SYSDATE-HIREDATE)/30) 근무월수, ROUND((SYSDATE-HIREDATE)/7) 근무주수 FROM EMP; |
--(5) 급여가 $1,500 부터 $3,000 사이의 사람은 급여의 15%를 회비로 지불하기로 하였다.
-- 이를 이름, 급여, 회비(-2자리에서 반올림)를 출력하라.
SELECT ename, sal, round(sal*0.15, -2) 회비 |
--(18) 각 부서별 같은 업무를 하는 사람의 인원수를 구하여 부서번호, 업무명, 인원수를 출력하라.
SELECT deptno, job, count(empno) FROM EMP GROUP BY DEPTNO, job order by deptno; |
--(12) 모든 사원의 60일이 지난 후의 'MONDAY'는 몇 년, 몇 월, 몇 일 인가를 구하여
-- 이름, 입사일, 'MONDAY'를 출력하라.
SELECT ename, hiredate, next_day(hiredate+60, '월') "60일 지난 다음 월요일" |
-- decode, case when then 분기
-- decode(값, 비교값1, 결과값1, 비교값2, 결과값2, 비교값3, 결과값3,...else값)
select decode(1, 0, '0이네', 1, '1이네', '아무것도 아니네')
|
8509161234567 -- 주민번호에서 나이를 출력하세요
CREATE TABLE SAWON |
-- 나이를 구하세요. (힌트 : ssn의 7번째 자리가 1,2면 1900년대사람,
-- 3,4면 2000년대 사람)
SELECT SNAME, EXTRACT(YEAR FROM SYSDATE) - DECODE(SUBSTR(SSN, 7, 1), 1, SUBSTR(SSN, 1, 2)+1900, 2, SUBSTR(SSN, 1, 2)+1900, 3, SUBSTR(SSN, 1, 2)+2000, 4, substr(ssn, 1, 2)+2000) 나이 FROM SAWON; |
-- 근무년수가 5년 미만인 사람은 10%, 5~10년은 15%, 11년 부터는(나머지) 20%
-- 보너스가 지급된다고 할 때 각 사원의 이름과 근무년수, 보너스를 구하시오
-- 계층형 쿼리
SELECT EMP.*, LEVEL, SYS_CONNECT_BY_PATH(ENAME, '/'), |
'Oracle DataBase > SQL' 카테고리의 다른 글
문제3 조인 & 서브쿼리 (0) | 2012.07.11 |
---|---|
6day (0) | 2012.07.10 |
4day (0) | 2012.07.10 |
문제2 (function) (0) | 2012.07.09 |
3day (0) | 2012.07.05 |