--1> 부서테이블의 모든 데이터를 출력하라.
select * from dept;--1> 부서테이블의 모든 데이터를 출력하라.
--2> EMP테이블에서 각 사원의 직업, 사원번호, 이름, 입사일을 출력하라.
--3> EMP테이블에서 직업을 출력하되, 각 항목(ROW)가 중복되지 않게
-- 출력하라.
select distinct job
from emp;
--4> 급여가 2850 이상인 사원의 이름 및 급여를 출력하라.
--5> 사원번호가 7566인 사원의 이름 및 부서번호를 출력하라.
select ename,deptno
from emp
where empno = 7566;
--6> 급여가 1500이상 ~ 2850이하의 범위에 속하지 않는 모든 사원의 이름
-- 및 급여를 출력하라.
--7> 1981년 2월 20일 ~ 1981년 5월 1일에 입사한 사원의 이름,직업 및
--입사일을 출력하라. 입사일을 기준으로 해서 오름차순으로 정렬하라.
select ename,job,hiredate
from emp
where hiredate between and
order by hiredate asc;
--8> 10번 및 30번 부서에 속하는 모든 사원의 이름과 부서 번호를
-- 출력하되, 이름을 알파벳순으로 정렬하여 출력하라.
--9> 10번 및 30번 부서에 속하는 모든 사원 중 급여가 1500을 넘는
-- 사원의 이름 및 급여를 출력하라.
--(단 컬럼명을 각각 employee 및 Monthly Salary로 지정하시오)
select ename as employee , sal as Monthly
from emp
where sal > 1500
group by deptno
having deptno =10 or deptno = 30;
--10> 관리자가 없는 모든 사원의 이름 및 직위를 출력하라.
--11> 커미션을 받는 모든 사원의 이름, 급여 및 커미션을 출력하되,
-- 급여를 기준으로 내림차순으로 정렬하여 출력하라.
select ename,sal,comm
from emp
where comm is not null and comm != 0
order by sal desc;
--12> 이름의 세 번째 문자가 A인 모든 사원의 이름을 출력하라.
--13> 이름에 L이 두 번 들어가며 부서 30에 속해있는 사원의 이름을
--출력하라.
select ename
from emp
where ename like '%L%L%' and deptno =30;
--14> 직업이 Clerk 또는 Analyst 이면서 급여가 1000,3000,5000 이
-- 아닌 모든 사원의 이름, 직업 및 급여를 출력하라.
--15> 사원번호, 이름, 급여 그리고 15%인상된 급여를 정수로 표시하되
--컬럼명을 New Salary로 지정하여 출력하라.
select empno,ename,sal,round((sal+(sal*15/100))) as "New Salary"
from emp;
--16> 15번 문제와 동일한 데이타에서 급여 인상분(새 급여에서 이전
-- 급여를 뺀 값)을 추가해서 출력하라.(컬럼명은 Increase로 하라).
--18> 모든 사원의 이름(첫 글자는
-- 대문자로, 나머지 글자는 소문자로 표시) 및 이름 길이를 표시하는
-- 쿼리를 작성하고 컬럼 별칭은 적당히 넣어서 출력하라.
--19> 사원의 이름과 커미션을 출력하되, 커미션이 책정되지 않은
-- 사원의 커미션은 'no commission'으로 출력하라.
--20> 모든 사원의 이름,부서번호,부서이름을 표시하는 질의를 작성하라.
--21> 30번 부서에 속한 사원의 이름과 부서번호 그리고 부서이름을 출력하라.
select emp.ename , emp.deptno , dept.dname
from emp join dept
on emp.deptno = dept.deptno
where emp.deptno = 30;
--22> 30번 부서에 속한 사원들의 모든 직업과 부서위치를 출력하라.
--(단, 직업 목록이 중복되지 않게 하라.)
--23> 커미션이 책정되어 있는 모든 사원의 이름, 부서이름 및 위치를 출력하라.
select e.ename , d.deptno , d.loc
from emp e join dept d
on e.deptno = d.deptno
where e.comm is not null;
--24> 이름에 A가 들어가는 모든 사원의 이름과 부서 이름을 출력하라.
--25> Dallas에서 근무하는 모든 사원의 이름, 직업, 부서번호 및 부서이름을
-- 출력하라.
select e.ename,e.job,e.deptno,d.dname,d.loc
from emp e join dept d
on e.deptno = d.deptno
where d.loc = 'DALLAS';
--26> 사원이름 및 사원번호, 해당 관리자이름 및 관리자 번호를 출력하되,
-- 각 컬럼명을 employee,emp#,manager,mgr#으로 표시하여 출력하라.
--27> 모든 사원의 이름,직업,부서이름,급여 및 등급을 출력하라.
select e.ename , e.job , e.deptno, e.sal, s.grade
from emp e join salgrade s
on e.sal between s.losal and s.hisal;
--28> Smith보다 늦게 입사한 사원의 이름 및 입사일을 출력하라.
--29> 자신의 관리자보다 먼저 입사한 모든 사원의 이름, 입사일,
-- 관리자의 이름, 관리자의 입사일을 출력하되 각각 컬럼명을
-- Employee,EmpHiredate, Manager,MgrHiredate로 표시하여
-- 출력하라.
select e.ename as employee , e.hiredate as emphiredate, d.ename as manager , d.hiredate as mgrhiredate
from emp e join emp d
on e.mgr = d.empno and e.mgr is not null
where to_date(d.hiredate) > to_date(e.hiredate);
--30> 모든 사원의 급여 최고액,최저액,총액 및 평균액을 출력하되
-- 각 컬럼명을 Maximum,Minimum,Sum,Average로 지정하여 출력하라.
--31> 각 직업별로 급여 최저액.최고액,총액 및 평균액을 출력하라.
select job,min(sal),max(sal),sum(sal),round(avg(sal))
from emp
group by job;
--32> 직업이 동일한 사람 수를 직업과 같이 출력하라.
--33> 관리자의 수를 출력하되, 관리자 번호가 중복되지 않게하라.
-- 그리고, 컬럼명을 Number of Manager로 지정하여 출력하라.
select count(distinct MGR) as "number of manager"
from emp;
select *from emp;
--34> 최고 급여와 최저 급여의 차액을 출력하라.
--35> 관리자 번호 및 해당 관리자에 속한 사원들의 최저 급여를 출력하라.
-- 단, 관리자가 없는 사원 및 최저 급여가 1000 미만인 그룹은 제외시키고
-- 급여를 기준으로 출력 결과를 내림차순으로 정렬하라.
select min(sal) ,mgr
from emp
where mgr is not null
group by mgr
having min(sal) > 1000
order by min(sal) desc;
--36> 부서별로 부서이름, 부서위치, 사원 수 및 평균 급여를 출력하라.
-- 그리고 각각의 컬럼명을 부서명,위치,사원의 수,평균급여로 표시하라.
--37> Smith와 동일한 부서에 속한 모든 사원의 이름 및 입사일을 출력하라.
-- 단, Smith는 제외하고 출력하시오
select ename, hiredate
from emp
where deptno = (select deptno from emp where ename = 'SMITH') and ename != 'SMITH';
--38> 자신의 급여가 평균 급여보다 많은 모든 사원의 사원 번호, 이름, 급여를
-- 표시하는 질의를 작성하고 급여를 기준으로 결과를 내림차순으로 정렬하라.
--39> 이름에 T가 들어가는 사원의 속한 부서
--에서 근무하는 모든 사원의 사원번호
-- 및 이름을 출력하라.
select empno , ename
from emp
where deptno in (select deptno from emp where ename like '%T%');
--40> 부서위치가 Dallas인 모든 사원의 이름,부서번호 및 직위를 출력하라.
--41> KING에게 보고하는 모든 사원의 이름과 급여를 출력하라.
select ename,sal
from emp
where mgr=(select empno from emp where ename='KING');
--42> Sales 부서의 모든 사원에 대한 부서번호, 이름 및 직위를 출력하라.
--43> 자신의 급여가 평균 급여보다 많고 이름에 T가 들어가는 사원과 동일한
-- 부서에 근무하는 모든 사원의 사원 번호, 이름 및 급여를 출력하라.
select empno,ename,sal
from emp
where deptno in (select deptno from emp where ename like '%T%') and sal > (select avg(sal) from emp);
--44> 커미션을 받는 사원과 급여가 일치하는 사원의 이름,부서번호,급여를
-- 출력하라.
--45> Dallas에서 근무하는 사원과 직업이 일치하는 사원의 이름,부서이름,
-- 및 급여를 출력하시오
select ename,deptno,sal,job
from emp
where job in (select e.job from emp e join dept d on e.deptno=d.deptno where d.loc='DALLAS');
--46> Scott과 동일한 급여 및 커미션을 받는 모든 사원의 이름, 입사일 및
-- 급여를 출력하시오
--47> 직업이 Clerk 인 사원들보다 더 많은 급여를 받는 사원의 사원번호,
-- 이름, 급여를 출력하되, 결과를 급여가 높은 순으로 정렬하라.
select empno,ename,sal
from emp e
where sal in (select sal from emp where job='CLERK');
order by sal desc;
select sal from emp where job='CLERK';
--48> 이름에 A가 들어가는 사원과 같은 직업을 가진 사원의 이름과
-- 월급, 부서번호를 출력하라.
--49> New York 에서 근무하는 사원과 급여 및 커미션이 같은 사원의
-- 사원이름과 부서명을 출력하라.
select *
from emp e
where sal in (select sal from emp e join dept d on e.deptno = d.deptno where d.loc = 'NEW YORK')
--50> Dallas에서 근무하는 사원과 직업 및 관리자가 같은 사원의 사원번호,사원이름,
-- 직업,월급,부서명,커미션을 출력하되 커미션이 책정되지 않은 사원은 NoCommission
-- 으로 표시하고, 커미션의 컬럼명은 Comm으로 나오게 출력하시오.
-- 단, 최고월급부터 출력되게 하시오