티스토리 뷰

SQL

ORACLE 고급함수(분석함수)_1

data-miner 2018. 10. 17. 00:27

한동안 놓아두었던 SQL 공부를 시작하면서 공부한 기록을 남겨보기로 합니다..

뇌를 자극하는 오라클 프로그래밍을 보면서 공부했습니다.


분석함수(ANALYTIC FUNCTION)란, 말그대로 테이블에 있는 데이터들을 특정용도로 분석하여 그 결과를 반환하는 함수를 의미.


[구문 형식]

분석함수 ( 파라미터 1, 파라미터 2, ....)

OVER (  <QUERY_PARTITION 절>

<ORDER BY 절>

           <WINDOWING 절>

  )

[예시]

SELECT    DEPARTMENT_ID , LAST_NAME, SALARY, 

  SUM(SALARY) OVER PARTITION BY DEPARTMENT_ID ORDER BY LAST_NAME) CUMM_SAL  --누적연봉

FROM      EMPLOYEES;


◇ 순위함수(RANKING FUNCTION)

: 특정그룹에 따라 순위를 매기는 기능, ORDER BY와 달리ㅣ 순위함수들은 계산된 순위 값 그 자체를 반환.

  RANK(), DENSE_RANK(), ROW_NUMBER()

◎ RANK() : 순위를 반환하는 함수(1,2,2,4...)

◎ DENSE_RANK() : 순위를 반환하는 함수(1,2,2,3,4....: 동점자감안한 빈순위 없이 리턴)

◎ RANK() : 순위를 반환하는 함수(1,2,3,4,5)


◇ FIRST 와 LAST

집계함수 KEEP ( DENSE_RANK FIRST[LAST] ORDER BY expr [ASC|DESC] ) OVER (PARTITION BY ....)


SELECT  departmend_id,

MAX(emplyee_id ||' '|| last_name )

 KEEP (DENSE_RANK FIRST ORDER BY salary DESC) 최대급여

     MAX(salary) 최대값,

     MIN(employee_id ||' '|| last_name )

            KEEP (DENSE_RANK LAST ORDER BY salary DESC) 최소급여

     MIN(salary) 최소값

FROM  employees

GROUP BY department_id ;


◎ NEILE() : 대상데이터들을 특정 기준으로 분할하여 그 결과값 분석

◎ CUME_DIST :

◎ PERCENT_RANK


◇ 윈도우함수

   : 분석함수를 사용할 때 계산대상이 되는 로우의 그룹을 의미


◇ 기타 분석함수들

[구문 형식]

 LAG (expr, offset, default) OVER ( PARTITION BY 절 )

 LEAD(expr, offset, default) OVER ( PARTITION BY 절 )


◎ LAG: 계산대상 로우들을 Partition By 절로 구분하여, expr 에 명시된 값을 기준으로  이전 로우의 값을 반환.

◎ LEAD: 계산대상 로우들을 Partition By 절로 구분하여, expr 에 명시된 값을 기준으로 이후 로우의 값을 반환.


'SQL' 카테고리의 다른 글

Chapter 04.오라클 식구들(데이터베이스객체)_01  (0) 2018.10.24
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함