--2장◈ 연 습 문 제 ◈
--
--1. 아래의 SELECT 문장이 성공적으로 수행 될까요? (참 / 거짓)
--SQL> SELECT ename 이름,job 업무,sal 급여
-- 2 FROM emp;
--
참
--
--2. 아래의 SELECT 문장이 성공적으로 수행 될까요? (참 / 거짓)
--SQL> SELECT *
-- 2 FROM salgrade;
--
참
--
--3. 이 문장에 에러가 있습니다. 올바르게 작성하시오.
--SQL> SELECT empno,ename,sal X 12 년 봉
-- 2 FROM emp;
--
Select empno,ename,sal*12 연봉
From emp;
--
--4. EMP 테이블의 구조와 내용을 조회하여라.
--
Desc emp;
--
--5. EMP 테이블에서 중복되지 않는 부서번호를 출력하시오.
--
Select distinct deptno
From emp;
--
--6. EMP 테이블의 이름과 업무를 연결하여 출력하여라.
--
Select ename || job
From emp;
--
--7. DEPT 테이블의 부서명과 위치를 연결하여 출력하여라.
--
Select dname || loc
From dept;
--
--8. EMP 테이블의 업무와 급여를 연결하여 출력하여라.
--
Select job || sal
From emp;
--
--9. 6,7,8번의 결과를 부석하여 설명하여라.
--
Select ename || job as 이름직업
From emp;
Select dname || loc as 부서명위치
From dept;
Select job || sal as 직업연봉
From emp;
--?
--3장◈ 연 습 문 제 ◈
--
--1. WHERE절에 HIREDATE의 비교를 '01-JAN-82'가 아닌 '01-jan-82'로 기술하면 결과는 ?
--SQL> SELECT *
-- 2 FROM emp
-- 3 WHERE hiredate = '23-jan-82';
에러!;
--2. EMP 테이블에서 급여가 3000이상인 사원의 정보를 사원번호,이름,담당업무,급여를 출력하는 SELECT 문장을 작성하시오.
select
empno,
ename,
job,
sal
from emp
where sal>=3000;
--3. EMP 테이블에서 사원번호가 7788인 사원의 이름과 부서번호를 출력하는 SELECT 문장을 작성하시오.
select
ename,
empno
from emp
where empno = '7788';
--4. EMP 테이블에서 입사일이 February 20, 1981과 May 1, 19981 사이에 입사한 사원의 이름,업무,입사일을 출력하는 SELECT 문장을 작성하시오. 단 입사일 순으로 출력하시오.
select
ename,
job,
hiredate
from emp
where hiredate between '1981-02-20' and '1981-05-01';
--5. EMP 테이블에서 부서번호가 10,20인 사원의 모든 정보를 출력하는 SELECT 문장을 작성하시오. 단 이름순으로 정렬하여라.
--
select *
from emp
where deptno in (10,20)
order by ename asc;
--6. EMP 테이블에서 급여가 1500이상이고 부서번호가 10,30인 사원의 이름과 급여를 출력하는 SELECT 문장을 작성하여라. 단 HEADING을 Employee과 Monthly Salary로 출력하여라.
--
select
ename as "Employee",
round(sal/12) as "Monthly Salary"
from emp
where sal>=1500 and deptno in (10,30);
--7. EMP 테이블에서 1982년에 입사한 사원의 모든 정보를 출력하는 SELECT 문을 작성하여라.
--
select *
from emp
where to_char(hiredate,'yyyy')=1982;
--8. EMP 테이블에서 COMM에 NULL이 아닌 사원의 모든 정보를 출력하는 SELECT 문을 작성하여라.
--
select *
from emp
where comm is not null;
--9. EMP 테이블에서 보너스가 급여보다 10%가 많은 모든 종업원에 대하여 이름,급여,보너스를 출력하는 SELECT 문을 작성하여라.
--
select
ename,
sal,
comm
from emp
where sal*1.1 >= comm;
--10. EMP 테이블에서 업무가 Clerk이거나 Analyst이고 급여가 1000,3000,5000이 아닌 모든 사원의 정보를 출력하는 SELECT 문을 작성하여라.
--
select *
from emp
where job in ('CLERK','ANALYST')
and sal not in ('1000','3000','5000');
--11. EMP 테이블에서 이름에 L이 두 자가 있고 부서가 30이거나 또는 관리자가 7782인 사원의 모든 정보를 출력하는 SELECT 문을 작성하여라.
--
select *
from emp
where ename like '%L%L%'
and deptno = 30
or empno = 7782;
--4장◈ 연 습 문 제 ◈
--
--1. 현재 날짜를 출력하고 열 레이블은 Current Date로 출력하는 SELECT 문장을 기술하시오.
--
select sysdate as "Current Date"
from dual;
--2. EMP 테이블에서 현재 급여에 15%가 증가된 급여를 사원번호,이름,업무,급여,증가된 급여(New Salary),증가액(Increase)를 출력하는 SELECT 문장을 기술하시오.
--
select
empno,
ename,
job,
sal,
sal*1.15 "증가된 급여",
sal*1.15-sal as "증가액"
from emp;
--3. EMP 테이블에서 이름,입사일,입사일로부터 6개월 후 돌아오는 월요일 구하여 출력하는 SELECT 문장을 기술하시오.
--
select
ename,
hiredate,
next_day(add_months(hiredate,6),'월요일')
from emp;
--4. EMP 테이블에서 이름,입사일, 입사일로부터 현재까지의 월수,급여, 입사일부터 현재까지의 급여의 총계를 출력하는 SELECT 문장을 기술하시오.
--
select
ename,
hiredate,
round((sysdate-hiredate)/12),
sal,
round((sysdate-hiredate)/12)*sal
from emp;
--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 selected
--
select ename||' earns '||to_char(sal,'$999,999')||' monthly but wants '||to_char(sal*3,'$999,999') as "Dream Salary"
from emp;
--6. EMP 테이블에서 모든 사원의 이름과 급여(15자리로 출력 좌측의 빈곳은 “*”로 대치)를 출력하는 SELECT 문장을 기술하시오.
--
select
ename,
lpad(sal,15,'*')
from emp;
--7. EMP 테이블에서 모든 사원의 정보를 이름,업무,입사일,입사한 요일을 출력하는 SELECT 문장을 기술하시오.
--
select
ename,
job,
hiredate,
to_char(hiredate,'day') 입사한요일
from emp;
--8. EMP 테이블에서 이름의 길이가 6자 이상인 사원의 정보를 이름,이름의 글자수,업무를 출력하는 SELECT 문장을 기술하시오.
--
select
ename 이름,
length(ename) 이름의글자수,
job 업무
from emp
where length(ename)>=6;
--9. EMP 테이블에서 모든 사원의 정보를 이름,업무,급여,보너스,급여+보너스를 출력하는 SELECT 문장을 기술하시오.
--
select
ename,
job,
sal,
comm,
sal+comm
from emp;
--5장◈ 연 습 문 제 ◈
--
--1. EMP 테이블에서 인원수,최대 급여,최소 급여,급여의 합을 계산하여 출력하는 SELECT 문장을 작성하여라.
--
select
count(sal),max(sal),min(sal),sum(sal)
from emp;
--2. EMP 테이블에서 각 업무별로 최대 급여,최소 급여,급여의 합을 출력하는 SELECT 문장을 작성하여라.
--
select
job,
max(sal)+min(sal)+sum(sal)
from emp
group by job;
--3. EMP 테이블에서 업무별 인원수를 구하여 출력하는 SELECT 문장을 작성하여라.
--
select
job,
count(empno)
from emp
group by job;
--4. EMP 테이블에서 최고 급여와 최소 급여의 차이는 얼마인가 출력하는 SELECT 문장을 작성하여라.
--
select
max(sal)-min(sal)
from emp;
--5. EMP 테이블에서 아래의 결과를 출력하는 SELECT 문장을 작성하여라.
--H_YEAR COUNT(*) MIN(SAL) MAX(SAL) AVG(SAL) SUM(SAL)
-------- --------- --------- --------- --------- ---------
--80 1 800 800 800 800
--81 10 950 5000 2282.5 22825
--82 2 1300 3000 2150 4300
--83 1 1100 1100 1100 1100
--
select
to_char(Hiredate,'yy'),
count(sal),
MIN(SAL),
MAX(SAL),
AVG(SAL),
SUM(SAL)
from emp
group by to_char(hiredate,'yy');
--6. EMP 테이블에서 아래의 결과를 출력하는 SELECT 문장을 작성하여라.
-- TOTAL 1980 1981 1982 1983
----------- --------- --------- --------- ---------
-- 14 1 10 2 1
--
select
count(hiredate) "total",
sum(decode(to_char(hiredate,'yyyy'),1980,1)) "1980",
sum(decode(to_char(hiredate,'yyyy'),1981,1)) "1981",
sum(decode(to_char(hiredate,'yyyy'),1982,1)) "1982",
sum(decode(to_char(hiredate,'yyyy'),1987,1)) "1987"
from emp;
--7. EMP 테이블에서 아래의 결과를 출력하는 SELECT 문장을 작성하여라.
--JOB Deptno 10 Deptno 20 Deptno 30 Total
----------- --------- --------- --------- ---------
--ANALYST 6000 6000
--CLERK 1300 1900 950 4150
--MANAGER 2450 2975 2850 8275
--PRESIDENT 5000 5000
--SALESMAN 5600 5600
--
select
job,
sum(decode(deptno,10,sal,0)) "Deptno 10",
sum(decode(deptno,20,sal,0)) "Deptno 20",
sum(decode(deptno,30,sal,0)) "Deptno 30",
sum(sal) "Total"
from emp
group by job;
--6장◈ 연 습 문 제 ◈
--
--1. EMP 테이블에서 모든 사원에 대한 이름,부서번호,부서명을 출력하는 SELECT 문장을 작성하여라.
--
select
e.ename,
e.deptno,
d.dname
from emp e,dept d
where e.deptno=d.deptno;
--2. EMP 테이블에서 NEW YORK에서 근무하고 있는 사원에 대하여 이름,업무,급여,부서명을 출력하는 SELECT 문장을 작성하여라.
--
select
e.ename,
e.job,
e.sal,
d.dname
from emp e,dept d
where e.deptno=d.deptno
and d.loc = 'NEW YORK';
--3. EMP 테이블에서 보너스를 받는 사원에 대하여 이름,부서명,위치를 출력하는 SELECT 문장을 작성하여라.
--
select
e.ename,
d.dname,
d.loc
from emp e,dept d
where e.deptno=d.deptno
and comm is not null;
--4. EMP 테이블에서 이름 중 L자가 있는 사원에 대하여 이름,업무,부서명,위치를 출력하는 SELECT 문장을 작성하여라.
--
select
e.ename,
e.job,
d.dname,
d.loc
from emp e,dept d
where e.deptno=d.deptno
and e.ename like '%K%';
--5. 아래의 결과를 출력하는 SELECT 문장을 작성하여라.(관리자가 없는 King을 포함하여 모든 사원을 출력)
--Employee Emp# Manager Mgr#
------------ --------- ---------- ---------
--KING 7839
--BLAKE 7698 KING 7839
--CLARK 7782 KING 7839
--. . . . . . . . . .
--14 rows selected.
--
select
e.ename Employee,
e.empno Emp#,
m.ename,
e.mgr Mgr#
from emp e , emp m
where e.mgr = m.empno(+);
--6. EMP 테이블에서 그들의 관리자 보다 먼저 입사한 사원에 대하여 이름,입사일,관리자 이름, 관리자 입사일을 출력하는 SELECT 문장을 작성하여라.
--
select
e.ename,
e.hiredate,
e.mgr,
hiredate
from emp e,dept d
where e.deptno=d.deptno
and loc = 'NEW YORK';
--7. EMP 테이블에서 사원의 급여와 사원의 급여 양만큼 “*”를 출력하는 SELECT 문장을 작성하여라. 단 “*”는 100을 의미한다.
--Employee and their salary
-------------------------------------------------------------------
--KING **************************************************
--BLAKE ****************************
--CLARK ************************
--JONES *****************************
--MARTIN ************
--ALLEN ****************
--TURNER ***************
--. . . . . . . . . .
--14 rows selected.
--
select
rpad(ename,10,' ')||lpad(' ',sal/100,'*') as "Employee and their salary"
from emp;
--7장◈ 연 습 문 제 ◈
--
--1. EMP 테이블에서 Blake와 같은 부서에 있는 모든 사원의 이름과 입사일자를 출력하는 SELECT문을 작성하시오.
--
select
e.ename,
e.hiredate
from emp e , emp m
where e.deptno = m.deptno
and m.ename = 'BLAKE';
--
--2. EMP 테이블에서 평균 급여 이상을 받는 모든 종업원에 대해서 종업원 번호와 이름을 출력하는 SELECT문을 작성하시오. 단 급여가 많은 순으로 출력하여라.
--
select
empno,
ename,
sal
from emp
where sal> (
select avg(sal)
from emp
)
order by sal DESC;
--
--3. EMP 테이블에서 이름에 “T”가 있는 사원이 근무하는 부서에서 근무하는 모든 종업원에 대해 사원 번호,이름,급여를 출력하는 SELECT문을 작성하시오. 단 사원번호 순으로 출력하여라.
--
select
deptno,
empno,
ename,
sal
from emp
where deptno in (
select
deptno
from emp
where ename like '%T%');
--
--4. EMP 테이블에서 부서 위치가 Dallas인 모든 종업원에 대해 이름,업무,급여를 출력하는 SELECT문을 작성하시오.
--
select
ename,
job,
sal
from emp
where deptno in
(
select
deptno
from dept
where loc='DALLAS');
--
--5. EMP 테이블에서 King에게 보고하는 모든 사원의 이름과 급여를 출력하는 SELECT문을 작성하시오.
--
select
ename,
sal
from emp
where ename in (
select
e.ename
from emp e , emp m
where e.mgr = m.empno
and m.ename='KING'
);
--
--6. EMP 테이블에서 SALES부서 사원의 이름,업무를 출력하는 SELECT문을 작성하시오.
--
select
ename,
job
from emp
where deptno in (
select
deptno
from dept
where dname = 'SALES'
);
--
--7. EMP 테이블에서 월급이 부서 30의 최저 월급보다 높은 사원을 출력하는 SELECT문을 작성하시오.
--
select
ename
sal
from emp
where sal > (
select
min(sal)
from emp
where deptno = 30
);
--
--8. EMP 테이블에서 부서 10에서 부서 30의 사원과 같은 업무를 맡고 있는 사원의 이름과 업무를 출력하는 SELECT문을 작성하시오.
--
select
ename,
job
from emp
where job in (
select
job
from emp
where deptno = 30
)
and deptno = 10;
--
--9. EMP 테이블에서 FORD와 업무도 월급도 같은 사원의 모든 정보를 출력하는 SELECT문을 작성하시오.
select *
from emp
where job in (
select
job
from emp
where ename = 'FORD'
)
and sal in (
select
sal
from emp
where ename = 'FORD'
);
--10. EMP 테이블에서 업무가 JONES와 같거나 월급이 FORD이상인 사원의 정보를 이름,업무,부서번호,급여를 출력하는 SELECT문을 작성하시오. 단 업무별, 월급이 많은 순으로 출력하여라.
--
select
ename,
job,
deptno,
sal
from emp
where job in (
select
job
from emp
where ename = 'JONES'
)
or sal >= (
select
sal
from emp
where ename = 'FORD'
);
--
--11. EMP 테이블에서 SCOTT 또는 WARD와 월급이 같은 사원의 정보를 이름,업무,급여를 출력하는 SELECT문을 작성하시오.
--
select
ename,
job,
sal
from emp
where sal = (
select
sal
from emp
where ename = 'SCOTT'
)
or sal = (
select
sal
from emp
where ename = 'WARD'
);
--
--12. EMP 테이블에서 CHICAGO에서 근무하는 사원과 같은 업무를 하는 사원의 이름,업무를 출력하는 SELECT문을 작성하시오.
--
select
ename,
job
from emp
where deptno in (
select
deptno
from dept
where loc = 'CHICAGO'
);
--
--13. EMP 테이블에서 부서별로 월급이 평균 월급보다 높은 사원을 부서번호,이름,급여를 출력하는 SELECT문을 작성하시오.
--
select
empno,
ename,
sal,
d.avgsal
from emp e, (
select
deptno,
avg(sal) avgsal
from emp
group by deptno
) d
where e.deptno = d.deptno
and e.sal > d.avgsal;
--
--14. EMP 테이블에서 업무별로 월급이 평균 월급보다 낮은 사원을 부서번호,이름,급여를 출력하는 SELECT문을 작성하시오.
--
select
e.deptno,
e.ename,
e.sal
from emp e, (
select
job,
avg(sal) avgsal
from emp
group by job
) d
where e.job = d.job
and e.sal < d.avgsal;
--
--15. EMP 테이블에서 적어도 한명 이상으로부터 보고를 받을 수 있는 사원을 업무,이름,사원번호,부서번호를 출력하는 SELECT문을 작성하시오.
--=mgr에 자기사원번호가 하나이상 있는 직원찾기
select
job,
ename,
empno,
deptno
from emp
where empno in (
select
mgr
from emp);
--
--16. EMP 테이블에서 말단 사원의 사원번호,이름,업무,부서번호를 출력하는 SELECT문을 작성하시오.
--
select
empno,
ename,
job,
deptno
from emp
where hiredate = (
select
min(hiredate)
from emp);
'Dev. > Back-end' 카테고리의 다른 글
정규화(Normalization) (12) | 2012.10.23 |
---|---|
Ubuntu 10.10 에 Sql Developer 설치하기 (2) | 2012.10.16 |
Ubuntu 12.04(x86) 에 Oracle11g Tomcat7 JDK1.7 Eclipse 깔기. (12) | 2012.10.04 |
SQL Table space 생성 (OEMC에서) (12) | 2012.10.04 |
20120925 Oracle (2) | 2012.09.25 |
댓글