15. SQL - 내가 틀린 것들 (#5)

Jason·2026년 1월 14일

SQL

목록 보기
15/47

SQL 내가 틀린 것들 #5 — LAG/LEAD 완전 정복

💡 LAG/LEAD 11문제 풀면서 확실히 정복했다!
실수하면서 배운 것들 정리.


🔴 1. FROM 실수 — CTE 안 쓰고 원본 테이블 씀

내가 쓴 거 (틀림)

WITH leaded AS (
    SELECT temp_date, temperature,
        LEAD(temperature) OVER(ORDER BY temp_date) AS tomorrow
    FROM daily_temp
)
SELECT temp_date, temperature, tomorrow
FROM daily_temp   -- ❌ 원본 테이블
WHERE temperature > tomorrow;

정답

FROM leaded   -- ✅ CTE에서!

교훈

CTE에서 새 컬럼 만들면 → FROM도 CTE에서!

tomorrow 컬럼은 원본 테이블에 없어!


🔴 2. LEAD에 잘못된 컬럼

내가 쓴 거 (틀림)

LEAD(month, 2)   -- ❌ 날짜 가져옴

정답

LEAD(sales, 2)   -- ✅ 매출 가져와야지!

교훈

비교할 값을 LEAD/LAG에 넣어야 해!

매출 비교면 sales, 주가 비교면 price!


🔴 3. 별칭 숫자로 시작 불가!

내가 쓴 거 (틀림)

AS 2m_later       -- ❌ 숫자로 시작

정답

AS next_2m_sales  -- ✅ 문자로 시작
AS m2_later       -- ✅ 이것도 가능

교훈

SQL 별칭은 숫자로 시작 못함!


🟡 4. 증가/감소 조건 방향

헷갈렸던 것

-- 감소한 날
WHERE revenue < prev_revenue   -- ✅ 오늘 < 전일

-- 증가한 날  
WHERE revenue > prev_revenue   -- ✅ 오늘 > 전일

교훈

상황조건
오늘이 감소today < prev
오늘이 증가today > prev
다음날 감소 예정today > next
다음날 증가 예정today < next

💡 5. NULL 자동 필터링 (새로 배움!)

WHERE user_count > tomorrow_user
user_counttomorrow_user결과
1100950TRUE ✅
1200NULLNULL → 제외!

NULL과 비교하면 결과도 NULL!
→ WHERE는 TRUE만 통과
→ NULL은 자동으로 걸러짐!


✅ LAG/LEAD 공식 정리

기본 문법

LAG(컬럼) OVER(ORDER BY 정렬)   -- 이전 행
LEAD(컬럼) OVER(ORDER BY 정렬)  -- 다음 행

N행 전/후

LAG(컬럼, 2) OVER(ORDER BY 정렬)   -- 2행 전
LEAD(컬럼, 2) OVER(ORDER BY 정렬)  -- 2행 후

그룹별

LAG(컬럼) OVER(PARTITION BY 그룹 ORDER BY 정렬)
LEAD(컬럼) OVER(PARTITION BY 그룹 ORDER BY 정렬)

📈 성장 기록

LAG

문제점수
복습 195점
복습 2 (2일 전)100점
복습 3 (PARTITION BY)100점

LEAD

문제점수
복습 195점
복습 2~4100점
복습 585점
복습 6100점

총 11문제! 🔥


📋 현재 상태

항목상태
JOIN + GROUP BY + HAVING
LEFT JOIN + IS NULL
ROW_NUMBER
LAG✅ 완전 정복!
LEAD✅ 완전 정복!
날짜 범위🟡 연습 필요

💪 핵심 체크리스트

  • LEAD/LAG 안에 올바른 컬럼?
  • FROM은 CTE에서?
  • 별칭 숫자로 시작 안 했지?
  • 증가/감소 조건 방향 맞아?

📝 11문제 풀고 나니 LAG/LEAD 완전히 손에 익었다!
CTE 쓸 때 FROM 조심하자!

profile
Data Analyst | Thoughts Become Things. 할 수 있다고 생각하면 할 수 있다. 할 수 없다고 생각하면 할 수 없다. | www.linkedin.com/in/명수-제-7ab843200

0개의 댓글