반응형

안녕들 하시죠!

이번 시간에도 '사내 DB테이블'을 이용한 문제풀이를 통해 ORACLE SQL 쿼리문을 복습해보겠습니다.

 

언어 및 툴

ORACLE DATABASE, SQLDEVELOPER

 

테이블 생성 참고

2019/09/28 - [Database] - ORACLE SQL 쿼리 복습을 위한 '사내 DB테이블' 세팅

 

쿼리 실행 순서

5 SELECT 
1 FROM 
2 WHERE
3 GROUP BY
4 HAVING
6 ORDER BY

 

문제

1. 사원수가 3명 이상인 부서명과 인원수를 출력하시오. ( group by, having )

having절 -- group by로 묶은 값들에 조건을 추가한다 (=where)

SELECT [그룹으로 묶은 컬럼명]
     , [집계할 컬럼명]
FROM [테이블명]
GROUP BY [그룹으로 묶을 컬럼명]
HAVING [그룹으로 묶은 값에 조건 추가]

count 함수 -- 테이블 전체 행 검색 ( count(*) )

                   특정 컬럼의 숫자 검색 ( count(컬럼명) )

1
2
3
4
5
select job
     , count(*)
from emp
group by job
having count(*>= 3;
cs

 

2. 직무 중 가장 적게 수입을 가지는 직무의 평균 월급을 출력하시오.
1
2
3
select min(AVG(sal)) 
from emp 
group by job;
cs

 

3. 사원번호, 사원이름, 부서이름, 부서번호를 출력하시오. ( Join )

Oracle 내부조인 -- 테이블간에 동일한 컬럼을 조인

1
2
3
4
5
6
7
select emp.ename
     , emp.empno
     , dept.dname
     , dept.deptno
from emp
   , dept
where emp.deptno = dept.deptno;
cs

Natural 조인 -- 테이블간에 동일한 모든 컬럼을 조인 

1
2
3
4
5
select ename
     , empno
     , dname
     , deptno
from emp natural join dept;
cs

Join On -- 조인의 세부조건을 지정할 수 있다.

1
2
3
4
5
6
select ename
     , empno
     , dname
     , dept.deptno
from emp join dept
on emp.deptno = dept.deptno;
cs

Join Using -- 컬럼을 선택해서 조인.

1
2
3
4
5
6
select ename
     , empno
     , dname
     , deptno
from emp join dept
using (deptno);
cs

 

 

 

4. 부서가 30이고, 급여가 1500이상인 사원의 이름, 급여, 부서명, 부서번호를 출력하시오. ( Join on )
1
2
3
4
5
6
7
8
select emp.ename
     , emp.sal
     , dept.dname
     , dept.deptno
from emp join dept
on emp.deptno = dept.deptno
where emp.deptno = 30
and sal >= 1500;
cs

 

5. 사원수가 5명이 넘는 부서의 부서명과 사원수를 출력하시오.

 

1
2
3
4
5
6
7
8
select dept.dname
     , count(*)
from emp
   , dept
where emp.deptno = dept.deptno
group by emp.deptno
       , dept.dname
having count(*>= 5;
cs

 

6. ADAMS 사원이 근무하는 부서이름과 지역이름을 출력하시오.
1
2
3
4
5
6
7
select dept.dname
     , dept.loc
     , emp.ename
from emp
   , dept
where emp.deptno = dept.deptno
and emp.ename = 'ADAMS';
cs

 

7. NEW YORK 이나 DALLAS 지역에 근무하는 사원들의 사원번호, 사원이름을 사원번호 순으로 검색하시오.
1
2
3
4
5
6
7
select e.empno
     , e.ename
from emp e
   , dept d
where e.deptno = d.deptno
and (d.loc = 'NEWYORK' or d.loc='DALLAS')
order by e.empno;
cs

오늘은 여기까지입니다 감사합니다.

+ Recent posts