1. 현재 날짜를 출력하고 열 헤더는 Current Date 로 출력하는 SELECT 문장을 기술하시오.
-------------------------------------------------------------------
SQL> col "Current Date" format a15
SQL> select sysdate as "Current Date" from dual;
Current Date
---------------
08/12/25
SQL>
2. EMP 테이블에서 현재 급여에 15%가 증가된 급여를 사원번호, 이름, 업무, 급여, 증가된 급여(New Salary), 증가액(Increase) 순서로 출력하는 SELECT 문장을 기술하시오.
-------------------------------------------------------------------
SQL> col ename format a10
SQL> col job format a10
SQL> select empno, ename, job, sal, sal*1.15 as "New Salary",
2 (sal*1.15)-sal as "Increase" from emp;
EMPNO ENAME JOB SAL New Salary Increase
---------- ---------- ---------- ---------- ---------- ----------
7369 SMITH CLERK 800 920 120
7499 ALLEN SALESMAN 1600 1840 240
7521 WARD SALESMAN 1250 1437.5 187.5
7566 JONES MANAGER 2975 3421.25 446.25
7654 MARTIN SALESMAN 1250 1437.5 187.5
7698 BLAKE MANAGER 2850 3277.5 427.5
7782 CLARK MANAGER 2450 2817.5 367.5
7788 SCOTT ANALYST 3000 3450 450
7839 KING PRESIDENT 5000 5750 750
7844 TURNER SALESMAN 1500 1725 225
7876 ADAMS CLERK 1100 1265 165
EMPNO ENAME JOB SAL New Salary Increase
---------- ---------- ---------- ---------- ---------- ----------
7900 JAMES CLERK 950 1092.5 142.5
7902 FORD ANALYST 3000 3450 450
7934 MILLER CLERK 1300 1495 195
14 개의 행이 선택되었습니다.
SQL>
3. EMP 테이블에서 이름, 입사일, 입사일로부터 6개울후 돌아오는 월요일을 구하여 출력하는 DELECT 문장을 기술하시오.
-------------------------------------------------------------------
SQL> select ename, hiredate, next_day(add_months(hiredate,6),'월')
2 as "Six Months Later" from emp;
ENAME HIREDATE Six Months Later
---------- -------- ----------------
SMITH 80/12/17 81/06/22
ALLEN 81/02/20 81/08/24
WARD 81/02/22 81/08/24
JONES 81/04/02 81/10/05
MARTIN 81/09/28 82/03/29
BLAKE 81/05/01 81/11/02
CLARK 81/06/09 81/12/14
SCOTT 87/04/19 87/10/26
KING 81/11/17 82/05/24
TURNER 81/09/08 82/03/15
ADAMS 87/05/23 87/11/30
ENAME HIREDATE Six Months Later
---------- -------- ----------------
JAMES 81/12/03 82/06/07
FORD 81/12/03 82/06/07
MILLER 82/01/23 82/07/26
14 개의 행이 선택되었습니다.
SQL>
4. EMP 테이블에서 이름, 입사일, 급여, 입사일로부터 현재까지의 월수, 입사일로부터 현재까지의 급여의 총계를 출력하는 SELECT 문장을 기술하시오.
-------------------------------------------------------------------
SQL> ed
file afiedt.buf(이)가 기록되었습니다
1 select ename, hiredate, sal,
2 trunc(months_between(sysdate,hiredate),0) as "근무월수",
3 sal*(trunc(months_between(sysdate,hiredate),0)) as "총급여"
4* from emp
SQL> /
ENAME HIREDATE SAL 근무월수 총급여
---------- -------- ---------- ---------- ----------
SMITH 80/12/17 800 336 268800
ALLEN 81/02/20 1600 334 534400
WARD 81/02/22 1250 334 417500
JONES 81/04/02 2975 332 987700
MARTIN 81/09/28 1250 326 407500
BLAKE 81/05/01 2850 331 943350
CLARK 81/06/09 2450 330 808500
SCOTT 87/04/19 3000 260 780000
KING 81/11/17 5000 325 1625000
TURNER 81/09/08 1500 327 490500
ADAMS 87/05/23 1100 259 284900
ENAME HIREDATE SAL 근무월수 총급여
---------- -------- ---------- ---------- ----------
JAMES 81/12/03 950 324 307800
FORD 81/12/03 3000 324 972000
MILLER 82/01/23 1300 323 419900
14 개의 행이 선택되었습니다.
SQL>
5. EMP 테이블에서 다음의 결과가 출력되도록 작성하시오.
Dream Salary ------------------------------------------------------------------- KING earns $5,000.00 monthly but wants $15,000.00 BLAKE earns $2,850.00 monthly but wants $8,550.00 CLARK earns $2,450.00 monthly but wants $7,350.00 ................................................ 14 rows selectd |
-------------------------------------------------------------------
SQL> ed
file afiedt.buf(이)가 기록되었습니다
1 select ename || ' earns' || to_char(sal,'$9,999.99') || ' Monthly but wants '
2 || to_char(sal*3,'$999,999.99') as "Dream Salary"
3 from emp
4 start with ename='KING'
5* connect by prior empno=mgr
SQL> /
Dream Salary
--------------------------------------------------------------------------------
KING earns $5,000.00 Monthly but wants $15,000.00
JONES earns $2,975.00 Monthly but wants $8,925.00
SCOTT earns $3,000.00 Monthly but wants $9,000.00
ADAMS earns $1,100.00 Monthly but wants $3,300.00
FORD earns $3,000.00 Monthly but wants $9,000.00
SMITH earns $800.00 Monthly but wants $2,400.00
BLAKE earns $2,850.00 Monthly but wants $8,550.00
ALLEN earns $1,600.00 Monthly but wants $4,800.00
WARD earns $1,250.00 Monthly but wants $3,750.00
MARTIN earns $1,250.00 Monthly but wants $3,750.00
TURNER earns $1,500.00 Monthly but wants $4,500.00
Dream Salary
--------------------------------------------------------------------------------
JAMES earns $950.00 Monthly but wants $2,850.00
CLARK earns $2,450.00 Monthly but wants $7,350.00
MILLER earns $1,300.00 Monthly but wants $3,900.00
14 개의 행이 선택되었습니다.
SQL>
6. EMP 테이블에서 모든 사원의 이름과 급여 (15자리로 출력 좌축의 빈곳은 "*"로 대치)를 출력하는 SELECT 문장을 기술하시오.
-------------------------------------------------------------------
SQL> col lpad(sal,15,'*') format a20
SQL> select ename, lpad(sal,15,'*') from emp;
ENAME LPAD(SAL,15,'*')
---------- --------------------
SMITH ************800
ALLEN ***********1600
WARD ***********1250
JONES ***********2975
MARTIN ***********1250
BLAKE ***********2850
CLARK ***********2450
SCOTT ***********3000
KING ***********5000
TURNER ***********1500
ADAMS ***********1100
ENAME LPAD(SAL,15,'*')
---------- --------------------
JAMES ************950
FORD ***********3000
MILLER ***********1300
14 개의 행이 선택되었습니다.
SQL>
7. EMP 테이블에서 모든 사원의 정보를 이름, 업무, 입사일, 입사한 요일을 출력하는 SELECT 문장을 기술하시오.
-------------------------------------------------------------------
SQL> select ename, job, hiredate,
2 to_char(hiredate,'RR/MM/DD/DAY') as "Day"
3 from emp;
ENAME JOB HIREDATE Day
---------- ---------- -------- ------------------------------------------
SMITH CLERK 80/12/17 80/12/17/수요일
ALLEN SALESMAN 81/02/20 81/02/20/금요일
WARD SALESMAN 81/02/22 81/02/22/일요일
JONES MANAGER 81/04/02 81/04/02/목요일
MARTIN SALESMAN 81/09/28 81/09/28/월요일
BLAKE MANAGER 81/05/01 81/05/01/금요일
CLARK MANAGER 81/06/09 81/06/09/화요일
SCOTT ANALYST 87/04/19 87/04/19/일요일
KING PRESIDENT 81/11/17 81/11/17/화요일
TURNER SALESMAN 81/09/08 81/09/08/화요일
ADAMS CLERK 87/05/23 87/05/23/토요일
ENAME JOB HIREDATE Day
---------- ---------- -------- ------------------------------------------
JAMES CLERK 81/12/03 81/12/03/목요일
FORD ANALYST 81/12/03 81/12/03/목요일
MILLER CLERK 82/01/23 82/01/23/토요일
14 개의 행이 선택되었습니다.
SQL>
8. EMP 테이블에서 이름의 길이가 6자 이상인 사원의 정보를 이름, 이름의 글자수, 업무를 출력하는 SELECT 문장을 기술하시오.
-------------------------------------------------------------------
SQL> select ename, length(ename), job
2 from emp
3 where length(ename) >= 6
4 order by ename;
ENAME LENGTH(ENAME) JOB
---------- ------------- ----------
MARTIN 6 SALESMAN
MILLER 6 CLERK
TURNER 6 SALESMAN
SQL>
9. EMP 테이블에서 모든 사원의 정보를 이름, 업무, 급여, 보너스, 급여+보너스를 출력하는 SELECT 문장을 기술하시오.
-------------------------------------------------------------------
SQL> select ename, job, sal, comm, sal+coalesce(comm,0) from emp;
ENAME JOB SAL COMM SAL+COALESCE(COMM,0)
---------- ---------- ---------- ---------- --------------------
SMITH CLERK 800 800
ALLEN SALESMAN 1600 300 1900
WARD SALESMAN 1250 500 1750
JONES MANAGER 2975 2975
MARTIN SALESMAN 1250 1400 2650
BLAKE MANAGER 2850 2850
CLARK MANAGER 2450 2450
SCOTT ANALYST 3000 3000
KING PRESIDENT 5000 5000
TURNER SALESMAN 1500 0 1500
ADAMS CLERK 1100 1100
ENAME JOB SAL COMM SAL+COALESCE(COMM,0)
---------- ---------- ---------- ---------- --------------------
JAMES CLERK 950 950
FORD ANALYST 3000 3000
MILLER CLERK 1300 1300
14 개의 행이 선택되었습니다.
SQL>
10. EMP 테이블에서 사원의 급여와 사원의 급여 양만큼 "*"를 출력하는 SELECT 문장을 작성하여라. 단 "*"는 100을 의미한다.
Employee and their salary ------------------------------------------------------------------- KING ************************************************ BLAKE ************************************ CLARK ***************************** JONES ************************************* MARTIN ******************** ALLEN *************************** TURNER ************************* ......................................... 14 rows selected. |
-------------------------------------------------------------------
SQL> select ename, lpad('*',rtrim(trunc(sal,-2)/100),'*') as "Emp Salary" from emp;
ENAME Emp Salary
-------------------- ----------------------------------------------------
SMITH ********
ALLEN ****************
WARD ************
JONES *****************************
MARTIN ************
BLAKE ****************************
CLARK ************************
SCOTT ******************************
KING **************************************************
TURNER ***************
ADAMS ***********
ENAME Emp Salary
-------------------- ----------------------------------------------------
JAMES *********
FORD ******************************
MILLER *************
14 개의 행이 선택되었습니다.
SQL>
11. EMP 테이블에서 JONES 사원을 ROOT로 시작하여 하위 계층 사원들의 사원번호, 이름, 급여, 계층 순서를 출력하시오.
-------------------------------------------------------------------
SQL> col name format a18
SQL> select lpad(' ',3*level)||ename "NAME", empno, mgr
2 from emp
3 start with ename='JONES'
4 connect by prior empno=mgr;
NAME EMPNO MGR
------------------ ---------- ----------
JONES 7566 7839
SCOTT 7788 7566
ADAMS 7876 7788
FORD 7902 7566
SMITH 7369 7902
'ORACLE > Excercise' 카테고리의 다른 글
Oracle - 연습문제 #7 (0) | 2008.12.29 |
---|---|
Oracle - 연습문제 #6 (0) | 2008.12.29 |
Oracle - 연습문제 #5 (0) | 2008.12.27 |
Oracle - 연습문제 #4 (0) | 2008.12.27 |
Oracle - 연습문제 #2 (0) | 2008.12.26 |
Oracle - 연습문제 #1 (0) | 2008.12.26 |