일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 코틀린
- 1과목
- SQL
- programmers
- 알고리즘
- CJ UNIT
- 코딩봉사
- softeer
- 코딩교육봉사
- 백준 알고리즘
- 공부일지
- 백준알고리즘
- java
- 문제풀이
- python
- 스프링
- 데이터베이스
- C++
- 시나공
- 백준
- MYSQL
- 자바
- SW봉사
- 회고
- 파이썬
- 소프티어
- 정보처리산업기사
- BFS
- kotlin
- 프로그래머스
- Today
- Total
JIE0025
[MSSQL] 윈도우 함수 Window Function 본문
윈도우함수(Window Function)
- 테이블의 행과 행 사이 관계를 쉽게 정의하기 위해 제공하는 함수
- OVER 절이 들어간 함수
- GROUP BY와 비슷하게 데이터를 그룹화하여 집계한다.
- GROUP BY는 집계된 결과만 보여주지만, 윈도우함수는 기존 데이터에 집계된 값을 추가해 나타냄
- GROUP BY 구문과 병행하여 사용 불가.
SELECT 윈도우함수(인수) |
ARGUMENTS, 인수 | 윈도우 함수에 따라서 0~N개의 인수를 설정한다. |
PARTITION BY | 전체 집합을 기준에 의해 소그룹으로 나눈다 |
ORDER BY | 어떤 항목에 대해서 정렬한다 |
WINDOWING | 행 기준 범위를 정함 ROWS는 물리적 결과의 행 수 RANGE는 논리적인 값에 의한 범위이다. |
GROUP BY vs WINDOWS FUNCTION
GROUP BY 와 WINDOWS FUNCTION이 데이터를 어떻게 그룹화해서 집계하는지 확인해보자.
다음은 buyTBL, 예제로 사용할 테이블이다.
1) GROUP BY를 사용
SELECT userID, SUM(price) AS '총 구매 가격' FROM buytbl GROUP BY userID ORDER BY sum(price); |
userID별로 묶어서 price 의 SUM() 합을 나타내는 쿼리
집계된 값이 나타나는 것 확인.
2) WINDOWS FUNCTION 사용
ROW_NUMBER() 등
쿼리의 결과 행들의 집합에 대해
그 윈도우에 속해 있는 모든 행들에 대해
집합적으로 수행한 후 (집계)
스칼라 결과 값을 출력하는 함수를 말함
말만 보면 이해가 잘 안간다.
예제를 보며 살펴보자
table을 보면, custid에 의하여 그룹핑이 되어있다.
각각을 윈도우1(custid가 1), 윈도우2(custid가 2)라고 정의한다.
그리고 파티션이기도 하다.
윈도우 함수는 윈도우 각각에 대해 집계하고, 스칼라 값으로 바꿔준다.
ROW_NUMBER() 특정 파티션 안에 있는 행들의 순번을 출력하는 함수
적용되는 윈도우는
OVER절을 통해
cust id 기준으로 파티션되고,
val 순서로 정렬된다.
as라는 명령어를 통해
rownum 컬럼 별칭을 사용해 ROW_NUMBER()가 표시된다는 뜻.
예제 2)
OVER절을 통해
cust id 기준으로 파티션되고,
val 순서로 정렬된다.
as라는 명령어를 통해
custidSum 컬럼 별칭을 사용해 custid의 SUM 을 표시
'개발 > Database' 카테고리의 다른 글
[MySQL] 데이터 변경 UPDATE (0) | 2021.04.13 |
---|---|
[MySQL] 데이터 삽입 INSERT (0) | 2021.04.12 |
[MSSQL] TOP filter 와 정렬(ASC,DESC) (0) | 2021.04.07 |
[MSSQL] SELECT, MSSM 관련 개념 (0) | 2021.04.07 |
[MSSQL] GROUP BY, HAVING 이해하기 (0) | 2021.04.07 |