본문 바로가기
[자격증] SQLD(SQL개발자)/↘ SQL 기본 및 활용

[ SQLD ] SQL 활용 - 6. 윈도우 함수

by 승큐리티 2020. 5. 30.


[ SQLD ] 

2. SQL 활용

2-6. 윈도우 함수



1. 윈도우 함수
행과 행관계의 연산 SQL을 쉽게 정의하기 위해 만든 함수
SELECT WINDOW_FUNCTION (ARGUMENTS)
     OVER ( [PARTITION BY 칼럼] [ORDER BY 절] [WINDOWING 절] )
          FROM 테이블 명;

OVER 문구 필수


2. 순위 함수 (RANK Function)
2-1) RANK 함수
순위를 계산하는 함수 동일순위는 동일한 순위 값을 부여한다.

SELECT 상호이름,메뉴이름, 음식가격,
RANK() OVER (ORDER BY 음식가격 DESC) 비싼_랭킹
FROM 음식점;
-> 5위가 없다.

2-2) DENSE_RANK 함수
동일한 순위를 하나의 순위로 생각한다.

SELECT  상호이름,메뉴이름, 음식가격, 
DENSE_RANK() OVER (ORDER BY 음식가격 DESC) 비싼_랭킹
FROM 음식점;
-> 5위가 있고 6위가 없다.

2-3) ROW_NUMBER 함수
동일한 순위라도 순위를 매긴다.

SELECT  상호이름,메뉴이름, 음식가격, 
ROW_NUMBER() OVER (ORDER BY 음식가격 DESC) 비싼_랭킹
FROM 음식점;
-> 6위까지 있다.


3. 집계 함수

집계 함수 설명
COUNT 행의 수 출력
SUM 총 합계
AVG 평균
MAX 최댓값
MIN 최솟값

SELECT  상호이름,메뉴이름, 음식가격, 
SUM (음식가격) OVER (PARTITION BY 상호이름) 상호별합계
FROM 음식점;
-> 상호별 합계를 구하라.


4. 행 순서 함수
4-1) FIRST_VALUE 함수
처음 나오는 값을 구한다.

4-2) LAST_VALUE 함수
가장 나중에 나오는 값을 구한다.

4-3) LAG 함수
이전 몇번째 행을 가져온다

4-4) LEAD 함수
특정 위치의 행을 가져온다

SELECT  상호이름,메뉴이름, 음식가격, 
LEAD(음식가격) OVER(ORDER BY 음식가격) LEAD_가격
FROM 음식점;


5. 비율 함수
5-1) RATIO_TO_REPORT 함수
파티션 내 전체 SUM(칼럼)값에 대한 행별 칼럼 값의 백분율을 소수점으로 조회

5-2) PERCENT_RANK 함수
파티션의 값 중 가장먼저 나온 것을 0 나중을 1을 기준으로 행별로 백분율 조회

5-3) CUME_DIST 함수
파티션별 윈도우의 전체건수에서 현재 행보다 작거나 같은 건수에 대한 누적백분율 조회

5-4) NTILE 함수
파티션별 전체 건수를 ARGUMENT 값으로 N 등분한 결과


 

댓글