Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- TO_DATE
- Oracle
- controller
- 함수
- web.xml
- 오류
- jsp
- 개념
- 암호화
- 정의
- was
- eGov
- 태그
- 과정평가형
- select
- Java
- jQuery
- spring
- html
- json
- POI
- CSS
- array
- mybatis
- javascript
- eGovFramework
- sql
- Ajax
- JVM
- input
Archives
- Today
- Total
web developer
[sql] LAG, LEAD 함수 본문
728x90
728x90
LAG, LEAD 함수
LAG와 LEAD는 모두 Window 함수로 각각 현재 행 이전 행과 이후 행의 데이터에 접근 할 수 있습니다.
기본 문법은 다음과 같습니다.
LAG(표현식, offset, default) OVER ( [PARTITION BY] ORDER BY )
LEAD(표현식, offset, default) OVER ( [PARTITION BY] ORDER BY )
- LAG 함수 : 이전 행 값 return
- LEAD 함수 : 다음 행의 값 return
- offset : 값을 가져올 행의 위치, default 1
- default : 값이 없을 경우 지정 할 기본 값
* offset은 몇 번째 이전(또는 이후) 행에 대해 접근할 지를 정수로 나타냅니다.
* 생략가능 : offset, default, partition by
* 생략 불가 : order by
1-1. LAG를 이용한 직전 분기(quarter)의 매출 [ default 값 X ]
/* LAG */
SELECT seq,
year,
quarter,
sales,
LAG(sales, 1) OVER (ORDER BY year, quarter ASC) AS last_quarter_sales
FROM quarter_sales;
1-2. LAG를 이용한 직전 분기(quarter)의 매출 [ default 값 O ]
/* LAG */
SELECT seq,
year,
quarter,
sales,
LAG(sales, 1, 10) OVER (ORDER BY year, quarter ASC) AS last_quarter_sales
FROM quarter_sales;
1-3. LAG를 이용한 직전 분기(quarter)의 매출과 차이
/* LAG */
SELECT seq,
year,
quarter,
sales,
sales - LAG(sales, 1) OVER (partition by year order by year, quarter asc) as last_quarter_sales
FROM quarter_sales;
2. LEAD를 이용한 직후 분기(quarter)의 매출
/* LEAD */
SELECT seq,
year,
quarter,
sales,
LEAD(sales, 1) OVER (partition by year order by year, quarter asc) as last_quarter_sales
FROM quarter_sales;
출처 : https://www.qu3vipon.com/sql-guide#823c3272-d70d-4952-9c34-2a0dcc31f3f4
728x90
728x90
'SQL' 카테고리의 다른 글
[sql] GROUP BY (0) | 2023.08.20 |
---|---|
[sql] sql, database, dbms, schema 개념 이해하기 (0) | 2022.12.10 |