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 | 29 | 30 |
Tags
- eGov
- Oracle
- jsp
- json
- input
- CSS
- 함수
- javascript
- was
- sql
- array
- web.xml
- POI
- 오류
- eGovFramework
- html
- 개념
- spring
- 태그
- Ajax
- Java
- 암호화
- TO_DATE
- 과정평가형
- jQuery
- 정의
- mybatis
- controller
- select
- JVM
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 |