◎ 윈도우 함수 1편 주소 : https://rh-cp.tistory.com/91
3-3. 행 순서 관련 함수
◎ 행 순서 관련 함수는 상위 행의 값을 하위에 출력하거나 하위 행의 값을 상위 행에 출력하게 할 수 있습니다.
◎ 또는 특정 위치의 행을 갖고와 출력 할 수 있습니다.
◎ FIRST_VALUE, LAST_VALUE, LAG, LEAD 함수가 있습니다.
◇ FIRST_VALUE -- 파티션에서 가장 처음에 나오는 값을 구합니다.
-- MIN 함수를 사용해 같은 결과를 구할 수 있습니다.
▷ 가장 처음에 나오는 ename을 가져옵니다. PARTITION BY deptno로 파티션을 만들어 deptno가 같은 사원 중 급여가 가장 많은 사원을 가져옵니다.
◇ LAST_VALUE -- 파티션에서 가장 마지막에 나오는 값을 구합니다.
-- MAX 함수를 사용해 같은 결과를 구할 수 있습니다.
▷ 가장 마지막에 나오는 ename을 가져옵니다. PARTITION BY deptno로 파티션을 만들어 deptno가 같은 사원 중 급여가 가장 적은 사원을 가져옵니다.
◇ LAG -- 이전 행(값)을 가져옵니다.
▷ test14는 이전 값이 없으므로 null을 갖고오나 DECODE로 값을 바꿔주었습니다.
▷ test7은 이전 sal값이 1300이므로 1300을 가져옵니다.
▷ PARTITION BY로 dept끼리 묶었기 때문에 dept별로 값을 가져옵니다.
◇ LEAD -- 지정된 행(값)을 가져옵니다. 기본값은 1입니다.
▷ LEAD(sal, 1, 0) 1을 주었기 때문에 바로 다음 행값을 가져옵니다
▷ 세번째 파라미터인 0은 null값을 처리하는 파라미터입니다.
3-4. 비율 관련 함수
◎ 비율 관련 함수는 누적 백분율, 순서별 백분율, 파티션을 N등분으로 분할한 결과 등을 조회할 수 있습니다.
◎ CUME_DIST, PERCENT_RANK, NTILE, RATIO_TO_REPORT 함수가 있습니다.
◇ CUME_DIST -- 파티션 전체에서 현재 행보다 작거나 같은 건수에 대한 누적 백분율을 조회합니다.
-- 누적 분포상 위치는 0~1사이값을 가집니다.
▷ deptno로 파티션을 나누어 누적 백분율을 조회합니다.
◇ PERCENT_RANK -- 파티션에서 제일 먼저 나온 것을 0, 제일 늦게 나온 것을 1로 하여 값이 아닌 행의 순서별 백분율을 조회합니다.
▷ deptno로 파티션을 나누어 가장 먼저 나온 것을 0 마지막을 1로하여 등수의 퍼센트를 구합니다.
◇ NTILE -- 파티션별로 전체 건수를 ARGUMENT 값으로 N등분한 결과입니다.
▷ deptno로 파티션을 나누어 급여가 높은 순서로 4등분 한 것입니다
◇ RATIO_TO_REPORT -- 파티션 내 전체 SUM(컬럼)에 대한 행 별 컬럼 값의 백분율을 소수점까지 조회합니다.(점유율 조회)
▷ deptno로 파티션을 나누어 각 sal이 각 deptno에서 어느정도 점유율을 갖고 있는지 조회합니다.
'Programming > DataBase' 카테고리의 다른 글
(ORACLE) PROCEDURE 에서 원하는 데이터를 찍어보자! (2) | 2019.07.26 |
---|---|
[DataBase]윈도우 함수(Window Function)에 대해 알아보자! 1편 (2) | 2019.03.02 |
[DataBase]그룹 함수(Group Function)에 대해 알아보자! (0) | 2019.03.02 |
[DataBase]서브쿼리(Subquery)란 무엇일까? (0) | 2019.03.01 |
[DataBase]계층형 조회(Connect by)를 사용하는 법을 알아보자! (1) | 2019.03.01 |