오라클 over() 함수

2013. 4. 17. 17:55·데이타베이스
참고1, 참고2, 참고3, 참고4

over 함수는 group by, order by 를 이용한 서브쿼리의 사용을 편리하게 하기 위해 사용하는 함수이다. 

보통 over 함수는 단독으로 사용하기 보다는

count(), max(), min(), sum(), avg(), rank(), row_number() 등과 같은 분석 함수와 함께 사용된다. 


-- OVER 함수 이용
SELECT
    NAME, 
    NO, 
    SUM(NO) over(PARTITION BY NAME ORDER BY NAME)
FROM (
SELECT 'A' AS NAME, '31' AS NO FROM dual UNION
SELECT 'B', '32' FROM dual UNION
SELECT 'B', '45' FROM dual UNION
SELECT 'D', '95' FROM dual UNION
SELECT 'D', '41' FROM dual UNION
SELECT 'D', '15' FROM dual)

/*
-- 결과
1	A	31	31
2	B	32	77
3	B	45	77
4	D	15	151
5	D	41	151
6	D	95	151
*/
-- GROUP BY 이용
SELECT
    NAME, 
    NO,
    sum(NO)
FROM (
SELECT 'A' AS NAME, '31' AS NO FROM dual UNION
SELECT 'B', '32' FROM dual UNION
SELECT 'B', '45' FROM dual UNION
SELECT 'D', '95' FROM dual UNION
SELECT 'D', '41' FROM dual UNION
SELECT 'D', '15' FROM dual)
GROUP BY NAME, NO
ORDER BY NAME

/*
-- 결과
   	NAME	NO	SUM(NO)
1	A	31	31
2	B	32	32
3	B	45	45
4	D	15	15
5	D	41	41
6	D	95	95
*/


위와같이 Name에 따른 No의 합을 구하려면 group by 를 이용하면 위와 같이 사용하면 안되고 서브쿼리를 이용하여 처리를 해야 한다. 

따라서 코드가 복잡해지고, 유지보수에 어려움이 생기게 될 것이다. 


이럴때 등장하는 것이 over() 함수 인 것이다. 

* partition by 는 group by 라고 생각하면 이해하기가 좀 더 쉬울 것 같다. 


반응형

'데이타베이스' 카테고리의 다른 글

[MySQL] ERROR 1045 (28000): 에러  (0) 2015.07.22
오라클의 소스코드에 특정 문자열 검색하기  (0) 2013.04.17
주간, 월간 근무가능 일 수 구하기  (0) 2013.03.27
오라클 날짜 정보 가지고 놀기  (0) 2013.03.27
오라클의 주의 시작일 변경여부 확인  (0) 2013.03.26
'데이타베이스' 카테고리의 다른 글
  • [MySQL] ERROR 1045 (28000): 에러
  • 오라클의 소스코드에 특정 문자열 검색하기
  • 주간, 월간 근무가능 일 수 구하기
  • 오라클 날짜 정보 가지고 놀기
hs_seo
hs_seo
Hello World!
    반응형
  • hs_seo
    개발자로 살아남기
    hs_seo
  • 전체
    오늘
    어제
    • 전체 (1140)
      • 개발자 (21)
        • 개발에 유의할 점 (0)
        • 면접 (5)
      • IT 소식 (5)
        • 업계 (1)
      • java (51)
        • 디자인패턴 (3)
        • apache-common (1)
      • 개념 (47)
        • 자료구조 (4)
        • 함수형사고 (8)
        • 디자인패턴 (1)
      • 데이터분석 (1)
      • python (67)
        • 코드조각 (12)
        • 라이브러리 (2)
      • 빅데이터 (418)
        • zookeeper (5)
        • hadoop (78)
        • hdfs (12)
        • hive (127)
        • hbase (16)
        • spark (40)
        • scala (4)
        • trino (3)
        • oozie (41)
        • Hue (9)
        • R (5)
        • sqoop (6)
        • flume (3)
        • elasticsearch (2)
        • airflow (16)
        • kafka (3)
        • kubernetes (10)
        • openstack (3)
        • flink (2)
        • redis (2)
      • 빅데이터 강좌 (2)
      • 알고리즘 (131)
        • 알고리즘 (1)
        • 백준 (61)
        • 정올 (41)
        • 더블릿 (5)
        • 프로그래머스 (1)
      • 프로그래밍 언어 (30)
        • go (4)
        • js (9)
        • .Net (6)
        • Jsp (1)
        • ansible (3)
        • terraform (6)
      • Tools (56)
        • docker (2)
        • macbook (6)
        • maven (3)
        • sublime (1)
      • 프레임워크 (25)
        • [JS] angularjs (2)
        • [JS] node.js (19)
        • [Java] spring (2)
        • Android (2)
      • 데이타베이스 (43)
        • SQLD (5)
        • Oracle (1)
        • MySQL (8)
        • ADsP (2)
      • 리눅스 (25)
        • Bash (61)
      • GCP (5)
      • AWS (34)
        • EC2 (2)
        • EMR (14)
      • 정보보안기사 (4)
        • 네트워크 (1)
      • 개인 (80)
        • 업무실수 (0)
        • 책 (9)
        • 교육 (3)
        • 여행 (17)
        • 영화 (12)
        • 음악 (2)
        • 피규어 (4)
        • 게임 (3)
        • 생각 (7)
        • 기타 (10)
        • 좋은글 (5)
        • 좋은 사이트 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

    • 빅데이터-하둡,하이브로 시작하기
    • 빅데이터-스칼라, 스파크로 시작하기
    • Kaggle에서 파이썬으로 데이터 분석 시작하기
    • 쉘스크립트 개발 시작하기
    • 개발자가 데이터 분석 준전문가 되기
    • 데브쿠마
  • 공지사항

  • 인기 글

  • 태그

    하둡
    알고리즘
    emr
    Hadoop
    HIVE
    Linux
    다이나믹
    Python
    파이썬
    hbase
    java
    oozie
    Tez
    백준
    airflow
    S3
    ubuntu
    nodejs
    yarn
    error
    bash
    HDFS
    하이브
    k8s
    AWS
    SPARK
    정올
    오류
    mysql
    build
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
hs_seo
오라클 over() 함수
상단으로

티스토리툴바