본문 바로가기

MySql

[내일 배움 캠프, SQL 달리기 반] Lv3. 이용자의 포인트 조회하기

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)