Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- $emit()
- 공식문서
- forNmae()
- 컴포넌트 주도
- quert
- exiting abnormally
- Java Reflextion API
- EBS
- ACCESS_REFUSED
- rabbitmq 에러
- 오라클 병렬처리
- AWS
- 자료구조
- react
- 리덕스
- vue.js
- VUE
- .getClass()
- paraller
- 리덕스 공식문서
- 네임드 뷰
- 커스텀 로그인
- 애그리거트
- REDIS
- 도커빌드
- Express
- 오라클
- 자바
- redux
- 리액트
Archives
- Today
- Total
개발정리
OVER와 PARTITION BY 에 대하여 본문
최근 SQL문제를 풀어보다가 분석함수(순위함수,집계함수)를 사용할 때 GROUP BY를 사용하지 않고 OVER 와 PARTITION BY를 사용해 쿼리를 효율적으로 작성하는 경우를 봤습니다.오늘을 OVER와 PARTION BY에대해 알아보겠습니다.
다음은 예시 테이블입니다
판매일 | 판매원 | 상품 | 판매금액 |
2024-01-01 | A | 상품1 | 1000 |
2024-01-01 | A | 상품2 | 1500 |
2024-01-01 | B | 상품1 | 2000 |
2024-01-02 | A | 상품3 | 2500 |
2024-01-02 | B | 상품2 | 3000 |
2024-01-02 | B | 상품3 | 3500 |
일단 GROUP BY를 먼저 써보자!
GROUP BY는 데이터 집합을 특정 컬럼을 기준으로 그룹화 한 후 , 각 그룸에 대해 집계 함수를 적용합니다.
SELECT 판매원, SUM(판매금액) AS 총판매금액
FROM 판매데이터
GROUP BY 판매원;
결과:
판매원 | 총판매금액 |
A | 5000 |
B | 10500 |
결과가 그룹화 되어 하나의 결과 집합을 반환 하게 됩니다.
OVER를 사용한 방법
OVER를 사용하면 집계함수가 그룹화 되지 않고, 전체 데이터에 대해 계산됩니다.
이때 PARTITION BY를 사용하여 특정 컬럼을 기준으로 데이터를 나눕니다.
GROUP BY와 비슷하다고 생각하시면 됩니다.
SELECT 판매일,판매원,상품,판매금액,
SUM(판매금액) OVER (PARTITION BY 판매원) AS 판매원별총판매금액
FROM 판매데이터;
결과:
판매일 | 판매원 | 상품 | 판매금액 | 판매원별총판매금액 |
2024-01-01 | A | 상품1 | 1000 | 5000 |
2024-01-01 | A | 상품2 | 1500 | 5000 |
2024-01-01 | B | 상품1 | 2000 | 10500 |
2024-01-02 | A | 상품3 | 2500 | 5000 |
2024-01-02 | B | 상품2 | 3000 | 10500 |
2024-01-02 | B | 상품3 | 3500 | 10500 |
OVER 와 POARTITION BY를 사용한 결과는 그룹화 되지 않고 각 행에 대한 결과가 출력됩니다.
'CS > SQL' 카테고리의 다른 글
[오라클] dual테이블에 대해서 (0) | 2025.04.16 |
---|---|
오라클 PL/SQL 알아보기 (0) | 2025.04.13 |
오라클 paraller 문 (0) | 2025.03.05 |
SELECT FOR UPDATE문 (0) | 2025.03.04 |
[오라클] MERGE 문 (0) | 2025.03.02 |