분석함수
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 |