
💡 같은 유형 4문제 연속 복습하면서 발견한 것들.
70점 → 99점까지 성장했다!
HAVING o.amount >= 300000
HAVING SUM(o.amount) >= 300000
HAVING은 그룹 조건이니까 집계함수 써야 함!
| ❌ | ✅ |
|---|---|
o.amount >= 300000 | SUM(o.amount) >= 300000 |
o.order_id >= 3 | COUNT(o.order_id) >= 3 |
SELECT COUNT(o.order_id) AS order_cnt
...
HAVING order_cnt >= 3
SELECT COUNT(o.order_id) AS order_cnt
...
HAVING COUNT(o.order_id) >= 3
MySQL에서는 별칭 되긴 하지만, BigQuery/PostgreSQL에서는 안 됨!
SQL 실행 순서:
1. FROM
2. WHERE
3. GROUP BY
4. HAVING ← SELECT 전! 별칭 아직 없음
5. SELECT ← 별칭 생성
6. ORDER BY ← SELECT 후! 별칭 있음
채널톡이 BigQuery 쓰니까 집계함수 직접 쓰는 습관 들이자!
WHERE YEAR(signup_date) = '2024'
WHERE YEAR(signup_date) = 2024
YEAR()는 숫자 반환! 따옴표 없이!
MySQL에서는 작동하긴 하지만, 습관상 타입 맞추자.
HAVING COUNT(tx_id) >= 5, SUM(amount) >= 500000
HAVING COUNT(tx_id) >= 5 AND SUM(amount) >= 500000
조건 여러 개는 AND로 연결! 쉼표 아님!
-- WHERE도 마찬가지
WHERE a >= 1 AND b < 10 -- ✅
WHERE a >= 1, b < 10 -- ❌
SUM(0.amount) -- 숫자 0
SUM(o.amount) -- 알파벳 o
급하게 풀면 오타 남. 제출 전에 한 번 더 보자!
| 회차 | 점수 | 실수 |
|---|---|---|
| 1회차 | 70점 | JOIN 문법, 날짜 비교, GROUP BY |
| 복습 1 | 90점 | 오타, HAVING 집계함수 |
| 복습 2 | 95점 | HAVING 별칭 |
| 복습 3 | 98점 | YEAR() 따옴표 |
| 복습 4 | 99점 | 쉼표 vs AND |
70점 → 99점! 같은 유형 반복하니까 확실히 늘었다.
| 항목 | 상태 |
|---|---|
| JOIN 문법 | ✅ |
| 날짜 범위 (AND) | ✅ |
| GROUP BY 컬럼 | ✅ |
| LEFT JOIN + IS NULL | ✅ |
| HAVING 집계함수 | ✅ |
| HAVING vs ORDER BY 별칭 | ✅ |
| ROW_NUMBER | 🟡 복습 필요 |
| LAG | 🟢 |
📝 같은 유형 반복이 답이다.
70점에서 99점까지, 4문제면 충분했다!
