분석함수 

 

 

RANK() : 순위를 표현할 때 사용하는 함수

RANK(조건값) WITHIN GROUP (ORDER BY 조건값 컬럼명 [ASC][DESC]);

특정 데이터의 순위 확인하기

(주의사항) RANK뒤에 나오는 데이터와 ORDER BY 뒤에 나오는 데이터는 같은 컬럼이어야 한다.

 

ex)

SELECT ename FROM emp GROUP BY ename;

SELECT RANK('SMITH') WITHIN GROUP ( ORDER BY ename) "RANK" FROM emp;

 

 

전체 순위보기

 

RANK() OVER (ORDER BY...)

OVER절 다음 순위를 만들려면 정렬(ORDER BY)는 필수이며

그룹을 나누어(PARTITION BY)순위를 만드는 경우는 선택사항이다.

 

 

 

JOIN : 둘 이상의 테이블을 연결하여 데이터를 검색하는 방법

           보통 둘 이상의 행들의 공통된 값 Primary Key 또는 Foreign Key값을 사용하여 조인한다.

 

 

Cartesian Product(카디션 곱)  : 검색하고자 했던 데이터 뿐만 아니라 조인에 사용된 

                                                   테이블들의 모든 데이터가 반환 되는 현상이다.

ex)

SELECT * FROM emp, dept; -- 조인 조건없이 잘못 조인된 경우이다

 

[ORACLE 전용]

 

 

동등 조인(Equal Join)

조건절 Equality Condition(=)에 의하여 조인이 이루어진다.

 

ex)

SELECT emp.name, dept.dname FROM emp, dept

WHERE emp.deptno = dept.deptno;

 

 

테이블에 알리아스 부여하기

 

ex)

SELECT e.name, d.dname FROM emp e, dept d

WHERE e.deptno = d.deptno;

 

 

컬럼명을 호출할 떄 테이블명 또는 테이블 일리아스를 생략

 

ex)

SELECT ename, e.deptno, dname FROM emp e, dept d

WHERE e.deptno = d.deptno;

 

 

추가적인 조건 명시하기

 

ex)

SELECT e.ename, d.dname FROM emp e, dept d

WHERE e.deptno = d.deptno AND e.sal BETWEEN 3000 AND 4000

 

비동등 조인(Non Equal Join)

테이블의 어떤 컬럼도 join할 테이블의 컬럼과 일치하지 않을 때 사용하고

조인 조건은 동등(=)이외의 연산자를 갖음(between and, is null, is not null, not in)

 

 

 

외부조인(Outer Join)

동등 조인을 할 떄 누락된 데이터가 있을 경우 누락된 데이터를 표시할 때 외부조인만 사용

 

누락된 행의 반대 테이블의 조인을 표시하는 칼럼에 (+)표시

SELECT a.ename 사원이름, m.ename 관리자이름

FROM emp a, emp m

WHERE a.mgr = e.empno(+);

 

 

ORACLE전용 끝

 

 

 

 

 

[표준SQL]

 

내부조인(Inner Join)

 

ex)

SELECT emp ename, dept deptno

FROM emp INNER JOIN dept

ON emp.deptno = dept.deptno;

 

SELECT emp ename, dept deptno

FROM emp JOIN dept

ON emp.deptno = dept.deptno;

 

 

부가적인 조건의 사용 (WHERE 사용)

SELECT e.ename, d.dname FROM emp e JOIN dept d

ON e.deptno = d.deptno

WHERE e.ename = 'ALLEN';

 

만약 조인 조건에 사용된 컬럼의 이름이 같다면 다음과 같이 USING절을 사용하여 조인 조건을 정의할 수 있다.

(주의)USING에 사용된 컬럼은 테이블명 또는 테이블 알리아스를 붙이지 않는다.

 

ex)

SELECT e.ename, deptno --d.deptno라고 하면 오류가 발생한다.

FROM emp e JOIN dept d 

USING(deptno);

 

SELECT ename, deptno --d.deptno라고 하면 오류가 발생한다.

FROM emp JOIN dept 

USING(deptno);

 

외부조인(Outer Join)

누락된 행의 방향을 표시한다.

 

ex)

SELECT e.ename name, m.ename manager_name

FROM emp e LEFT OUTER JOIN emp m

ON e.mgr = m.empno;

 

 

 

'ORACLE SQL' 카테고리의 다른 글

ORACLE SQL-기본문법7  (0) 2022.11.03
ORACLE SQL-기본문법6  (0) 2022.11.03
ORACLE SQL-기본문법4  (0) 2022.10.31
ORACLE SQL-기본문법3  (0) 2022.10.30
ORACLE SQL - 기본 문법2  (1) 2022.10.29

+ Recent posts