본문 바로가기

Programming/DataBase

[DataBase]윈도우 함수(Window Function)에 대해 알아보자! 2편

728x90
반응형



◎ 윈도우 함수 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에서 어느정도 점유율을 갖고 있는지 조회합니다.


반응형