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 | 31 |
Tags
- 한장으로끝내는비즈니스모델100
- activation
- 머신러닝
- CAC
- pmf
- aarrr
- 선정산서비스
- 그로스해킹
- model_selection
- allra
- sklearn
- 활성화
- 리텐션
- 바로팜
- mysql설치 #mysql #mysqluser #mysqlworkbench
- BM분석
- 전환율
- 데이터분석
- 셀프스토리지
- 핀테크
- retention
- 퍼널분석
- 서말리포켓
- 비즈니스모델
- 역설구조
- 인게이지먼트
- 올라
- 코호트
- 팔방이익구조
- fundbox
Archives
- Today
- Total
데이터로그😎
[SQL기본] 윈도우 함수: Lead, Lag() 본문
이전에 발행한 윈도우 함수 관련 글 ↓
[윈도우 함수] SUM() OVER()
아래 문제를 통해 OVER() 함수에 대해 알아보자. 2023년 4월 기준 전국 주요 시/도의 연령대별 인구수 합계를 구하고, 연령대별 인구 비율 구하기 ✅step1 :2023년 4월 기준 전국 주요 시/도의 연령대별
fine-1004.tistory.com
[윈도우 함수] RANK() OVER()
쿼리문 작성 시 '순위'를 매겨야 할 때가 있다. 예를 들면, A라는 class 내에서 수학성적 1등이 누구인지? 혹은 내가 운영하는 책방에서 판매량이 1위인 책이 무엇인지? 등을 알아보고 싶을 때. 이
fine-1004.tistory.com
Leet Code를 풀고 있는데, 이전 row와 다음 row를 참조해야 하는 문제가 있었다...!이 때는 LEAD, LAG함수를 사용하면 된다.
Lead, Lag 역시 row_number나 rank와 같이 Window function이다.
- LEAD(): 현재 행 다음의 행에 있는 열 값을 가져옴
- LAG(): 현재 행 이전의 행에 있는 열 값을 가져옴
Stadium이라는 테이블이 아래와 같다고 가정하자.
"+------+------------+-----------+
| id | visit_date | people |
+------+------------+-----------+
| 1 | 2017-01-01 | 10 |
| 2 | 2017-01-02 | 109 |
| 3 | 2017-01-03 | 150 |
| 4 | 2017-01-04 | 99 |
| 5 | 2017-01-05 | 145 |
| 6 | 2017-01-06 | 1455 |
| 7 | 2017-01-07 | 199 |
| 8 | 2017-01-09 | 188 |
+------+------------+-----------+
만약 Stadium 테이블에서 LEAD, LAG를 적용하면 어떤 결과가 나올까?
SELECT
id,
visit_date,
people,
LAG(people, 1) OVER (ORDER BY id) AS lag1_people,
LAG(people, 2) OVER (ORDER BY id) AS lag2_people,
LEAD(people, 1) OVER (ORDER BY id) AS lead1_people,
LEAD(people, 2) OVER (ORDER BY id) AS lead2_people
FROM Stadium;
다음과 같은 결과가 나오게 된다.
+----+------------+--------+-------------+-------------+--------------+--------------+
| id | visit_date | people | lag1_people | lag2_people | lead1_people | lead2_people |
+----+------------+--------+-------------+-------------+--------------+--------------+
| 1 | 2017-01-01 | 10 | NULL | NULL | 109 | 150 |
| 2 | 2017-01-02 | 109 | 10 | NULL | 150 | 99 |
| 3 | 2017-01-03 | 150 | 109 | 10 | 99 | 145 |
| 4 | 2017-01-04 | 99 | 150 | 109 | 145 | 1455 |
| 5 | 2017-01-05 | 145 | 99 | 150 | 1455 | 199 |
| 6 | 2017-01-06 | 1455 | 145 | 99 | 199 | 188 |
| 7 | 2017-01-07 | 199 | 1455 | 145 | 188 | NULL |
| 8 | 2017-01-09 | 188 | 199 | 1455 | NULL | NULL |
+----+------------+--------+-------------+-------------+--------------+--------------+
'# 1. 언어 > # 1.1. SQL' 카테고리의 다른 글
[SQL기본] 날짜형식 관련 함수 (0) | 2023.12.29 |
---|---|
[SQL기본] 문자 패턴 찾기: REGEXP() (1) | 2023.12.20 |
[SQL기본] 윈도우 함수: RANK() OVER() (0) | 2023.11.24 |
[SQL기본] GROUP BY, GROUPING (0) | 2023.09.08 |
[SQL기본] 문자열 처리: REPLACE, SUBSTR, LPAD, TRIM (0) | 2023.09.08 |