DB/MySQL

[MySQL] LEAD() 함수

동호다찌 2023. 1. 17. 11:27
반응형

순위함수(분석함수)

결과에 순번, 순위를 매기는 함수

비집계함수  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