반응형
순위함수(분석함수)
결과에 순번, 순위를 매기는 함수
비집계함수 중 RANK, NTILE, DENSE_RANK, ROW_NUMBER 등이 해당된다.
SELECT <순위함수이름> (arguments) OVER ([PARTITION BY <partion_by_list>] ORDER BY <order_by_list>) FROM 테이블명; |
PARTITION BY : 동일 그룹으로 묶어줄 칼럼 명 지정
ORDER BY : Partition 정의에 지정된 컬럼에 대한 정렬 수행
LEAD() 함수
분석 함수는 윈도우 함수의 다른 종류입니다.
해당 함수는 행 내에 있는 값을 반환할 때 사용되고, 그 행들은 주로 선행하는 행들이거나 후행하는 행들입니다.
분석 함수는 특정 열의 선행 혹은 후행하는 행 사이의 차이를 구할 때 상당히 용이합니다.
LEAD라는 이름이 말해주듯이 해당 함수는 뒤에 있는 열들의 값을 이끌어 와서 반환해줍니다.
SELECT *, LEAD(Population) OVER(ORDER BY Population DESC) AS value
FROM city c ;
LEAD() 함수는 열 Population의 기존 행 다음 행 값을 반환했습니다. 위 쿼리문 예시에서는 순위 함수와는 달리 LEAD() 함수는 다음 행을 반환할 열의 이름을 괄호 안에 써 줍니다. LEAD() 함수를 활용한 열의 마지막 값은 항상 NULL일 입니다.
아래 결과 이미지를 보면 42 이후의 인구수 데이터가 존재하지 않아 더 이상 뒤에서 이끌어 올 데이터가 없으므로 NULL 값이 되는 것입니다.
구분막(파티션) 내의 다음 값 가져오기
SELECT *, LEAD(Population) OVER(PARTITION BY CountryCode ORDER BY Population DESC) AS value
FROM city c ;
반응형
'DB > MySQL' 카테고리의 다른 글
[MySQL] SUM() OVER()함수 (0) | 2023.01.17 |
---|---|
[MySQL] LAG() 함수 (0) | 2023.01.17 |
[MySQL] ROW_NUMBER() 함수 (0) | 2023.01.17 |
[MySQL] DENSE_RANK() 함수 (0) | 2023.01.17 |
[MySQL] RANK() 함수 (0) | 2023.01.17 |