본문 바로가기
DataBase

[SQL] LAG, LEAD 함수

by 바까 2021. 9. 15.
반응형
--15)LAG, LEAD 함수
--특정 집합 내에서 결과 건수의 변화 없이 해당 집합안에서 특정 컬럼의 이전 행의 값 혹은 다음행의 값을 구한다.

	
--LAG 함수 - 이전 행의 값을 찾는다.
SELECT A.proudct_name, B.GROUP_NAME, A.PRICE,
	   LAG(A.PRICE,1) OVER(										 --PRICE의 이전 행의 값을 구한다.
	   PARTITION BY B.GROUP_NAME ORDER BY A.PRICE) AS PREV_PRICE,--GROUP_NAME 컬럼 기준으로 PRICE컬럼으로 정렬한 값중에서
	   A.PRICE - LAG(PRICE,1) OVER(								 --현재형의 PRICE에서 이전행의 PRICE를 뺀다.
	   PARTITION BY GROUP_NAME ORDER BY A.PRICE) AS CUR_PREV_DIFF--GROUP_NAME 컬럼 기준으로 PRICE컬럼으로 정렬한 값중에서
FROM PRODUCT A 
INNER JOIN PRODUCT_GROUP B 
	    ON (A.GROUP_ID = B.GROUP_ID);

select * from PRODUCT;

--LEAD 함수 - 다음행의 값을 찾는다.
SELECT A.proudct_name, B.GROUP_NAME, A.PRICE,
	   LEAD(A.PRICE,1) OVER(									 --PRICE의 다음 행의 값을 구한다.
	   PARTITION BY B.GROUP_NAME ORDER BY A.PRICE) AS NEXT_PRICE,--GROUP_NAME 컬럼 기준으로 PRICE컬럼으로 정렬한 값중에서
	   A.PRICE - LEAD(PRICE,1) OVER(							 --현재형의 PRICE에서 다음행의 PRICE를 뺀다.
	   PARTITION BY GROUP_NAME ORDER BY A.PRICE) AS CUR_NEXT_DIFF--GROUP_NAME 컬럼 기준으로 PRICE컬럼으로 정렬한 값중에서
FROM PRODUCT A 
INNER JOIN PRODUCT_GROUP B 
	    ON (A.GROUP_ID = B.GROUP_ID);
반응형

'DataBase' 카테고리의 다른 글

[SQL] INSERT문  (0) 2021.09.15
[SQL] WITH문  (0) 2021.09.15
[postgreSQL] FIRST_VALUE, LAST_VALUE 함수  (0) 2021.09.15
[postgreSQL] ROW_NUMBER, RANK, DENSE_RANK함수  (0) 2021.09.15
[postgreSQL] [분석함수] AVG()  (0) 2021.09.15

댓글