MySql
[내일 배움 캠프, SQL 달리기 반] Lv3. 이용자의 포인트 조회하기
kimyongjun0129
2025. 3. 24. 21:00
1. 문제
2. 풀이
- FROM → users u LEFT JOIN point_users p ON u.user_id=p.user_id
- WHERE → X (필터링 조건이 없으므로)
- GROUP BY → X (그룹 조건이 없으므로)
- HAVING → X (그룹이 없으므로)
- SELECT → u.user_id, u.email, if(p.point IS NULL, 0, p.point)
- ORDER BY → point DESC
SELECT u.user_id,
u.email,
if(p.point IS NULL, 0, p.point) point
FROM users u LEFT JOIN point_users p ON u.user_id=p.user_id
ORDER BY point DESC;
3. 정답
SELECT
u.user_id, u.email,
COALESCE(p.point,0) as point
FROM
users u
LEFT JOIN
point_users p ON u.user_id = p.user_id
ORDER BY p.point desc;
- COALESCE() 함수를 이용하여, p.point가 NULL이 아니면 p.point가 출력되고 NULL이면 0이 출력되게 하였다.
- 의문?? : ORDER BY 절에도 p.point가 아닌 COALESCE(p.point,0)을 적용해야 하는 것이 아닌가?
4. COALESCE() : 여러 개의 인자 중에서 첫 번째로 NULL이 아닌 값을 반환한다.
- 구조 : COALESCE (val1, val2, ...., val_n)