11. SQL - 내가 틀린 것들 (#1)

Jason·2026년 1월 12일

SQL

목록 보기
11/47
post-thumbnail

SQL 내가 틀린 것들 #1 — 코테 준비하며 발견한 내 약점

💡 채널톡 DA 면접 준비하면서 SQL 문제 풀다가 틀린 것들 정리.
부끄럽지만 기록해둔다. 같은 실수 반복 안 하려고.
.
.
.
.

.

🔴 1. JOIN 문법 순서

내가 쓴 거 (틀림)

FROM orders o
ON users u o.user_id = u.user_id

정답

FROM orders o
JOIN users u ON o.user_id = u.user_id

교훈

FROM → JOIN → ON 순서!
JOIN 키워드 빼먹으면 안 됨.


🔴 2. 날짜 범위 비교

내가 쓴 거 (틀림)

WHERE '2024-01-01' <= created_at < '2024-02-01'

파이썬 문법이 튀어나왔다 ㅋㅋ

정답

WHERE created_at >= '2024-01-01' 
  AND created_at < '2024-02-01'

교훈

SQL은 AND로 연결해야 함!
파이썬처럼 a <= x < b 안 됨.


🟡 3. GROUP BY 컬럼 누락

내가 쓴 거 (틀림)

SELECT u.user_id, u.name, COUNT(*)
FROM users u
JOIN orders o ON u.user_id = o.user_id
GROUP BY u.user_id

정답

SELECT u.user_id, u.name, COUNT(*)
FROM users u
JOIN orders o ON u.user_id = o.user_id
GROUP BY u.user_id, u.name

교훈

SELECT에 있는 비집계 컬럼은 GROUP BY에 전부 포함!
name도 SELECT에 있으니까 GROUP BY에 넣어야 함.


🟡 4. SELECT에 조건 넣기

내가 쓴 거 (틀림)

SELECT user_id, COUNT(order_id) >= 2
FROM orders

정답

SELECT user_id, COUNT(order_id) AS order_count
FROM orders
GROUP BY user_id
HAVING COUNT(order_id) >= 2

교훈

  • SELECT = 출력할 컬럼
  • HAVING = 그룹 조건
  • WHERE = 행 조건

조건은 SELECT에 넣는 게 아님!


🟡 5. ROW_NUMBER() 문법

내가 쓴 거 (틀림)

ROW_NUMBER() order_id as rn

뭔가 대충 썼다...

정답

ROW_NUMBER() OVER(PARTITION BY user_id ORDER BY amount DESC) AS rn

교훈

ROW_NUMBER() OVER(PARTITION BY 그룹 ORDER BY 정렬) AS 별칭

이 구조 통째로 외우자!


✅ 6. LAG() — 이건 맞음!

LAG(amount) OVER(ORDER BY sale_date) AS prev_amount

"이전 행 값 가져오기" = LAG()

ROW_NUMBER 이해하니까 LAG도 바로 이해됨.
.
.
.
.
.


📋 현재 상태 체크

항목상태메모
JOIN 문법🔴FROM JOIN ON 순서
날짜 범위🔴AND로 연결!
GROUP BY 컬럼🟡비집계 컬럼 전부
SELECT vs HAVING🟡조건은 HAVING
ROW_NUMBER🟡OVER() 구조 외우기
LAG🟢이해 완료

💪 다음 목표

  • JOIN, 날짜 비교 문법 손에 익히기
  • ROW_NUMBER + CTE 패턴 반복 연습
  • 실전 문제 더 풀어보기

📝 틀려야 배운다.
같은 실수 두 번 안 하면 된다!

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

0개의 댓글