반응형
--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 |
댓글