그룹 함수
GROUP BY절에 의해 그룹별 연산 결과 리턴
동시에 출력하는 합집합
- GROUPING SETS (A, B, …) : A별, B별
- ROLLUP(A, B) : A별, (A,B)별, 전체
- CUBE(A, B) : A 별, B 별, (A,B)별, 전체
윈도우 함수
LAG LEAD SUMAVG MIN MAX COUNT RANK
윈도우 함수 OVER ( 범위)
( PARTITION BY A ): 총 데이터 수 변화 없이 그룹연산 수행할 GROUP BY 컬럼
ORDER BY 를 PARTITON BY 전에 사용 불가
( ORDER BY A ASC | DESC ): rank, 누적값 출력 시 사용
( ROWS | RANGE BETWEEN A AND B ) 연산 범위 설정, ORDER BY 필수
- ROWS : 값이 같더라도 각 행씩 연산
- RANGE : 같은 값의 경우 하나의 RANGE 로 묶어서 동시 연산(DEFAULT)
- BETWEEN A AND B
A) 시작점 정의
- CURRENT ROW : 현재행부터
- UNBOUNDED PRECEDING : 처음부터(DEFAULT)
- N PRECEDING : -N 부터
B) 마지막 시점 정의
- CURRENT ROW : 현재행까지(DEFAULT)
- UNBOUNDED FOLLOWING : 마지막까지
- N FOLLOWING : +N 까지
RANK 함수
RANK WITHIN GROUP
RANK() OVER() = 1224567
- 전체 / 특정 그룹 중 값의 순위 확인
- 순위를 구할 대상을 ORDER BY절에 명시 그룹 내 순위를 구할 때 PARTITION BY 필수
DENSE_RANK() OVER() = 1223456
- 누적순위
- 값이 같을 때 동일한 순위를 부여한 후 다음 순위가 바로 이어짐 (1등이 5명이고 다음은 2등)
ROW_NUMBER() OVER() = 1234567
- 연속된 행 번호 나열한대로의 순서 값 리턴
LAG() | LEAD() OVER()
- 행 순서대로 - 이전 값 | 이후 값 가져오기 ORDER BY 필수
FIRST_VALUE() | LAST_VALUE() OVER()
- 정렬 순서대로 정해진 범위에서의 처음 값, 마지막 값 출력
- 순서와 범위 정의에 따라 최솟값과 최댓값 리턴 가능
NTILE() OVER()
- 그룹 번호 리턴
- ORDER BY 필수 특정 그룹을 원하는 수 만큼 분리 가능
RATIO_TO_REPORT() OVER()
CUME_DIST() OVER()
- 각 값의 누적 비율 리턴
- ORDER BY 필수
PERCENT_RANK() OVER()
- 분위 수 리턴
- ORDER BY 필수
- 0 에서 1 사이 내 위치
ROWNUM: 출력된 데이터 기준으로 행 번호 부여 1234567
FETCH: 출력될 행의 수 제한
계층형 질의
START WITH : 데이터를 출력할 시작 지정하는 조건
CONNECT BY PRIOR : 행을 이어나갈 조건
데이터 정규화
제 1정규화: 컬럼, 로우가 유일(원자성)
제 2정규화: 완전함수종속 (일반 속성들은 모두 기본키를 참조해야 함)
제 3정규화: 이행적 함수 종속 (일반 속성 간 참조하면 안됨)