SteadyDrills

[TIL]SQL 과제 Lv3. 이용자의 포인트 조회하기 본문

SQL

[TIL]SQL 과제 Lv3. 이용자의 포인트 조회하기

Drills 2024. 6. 12. 17:00

20240612

 

문제의 조건: 두 테이블을 LEFT JOIN을 이용해서 JOIN 하고, POINT에서 NULL값을 0으로 표기하도록 컬럼값을 추출하                         라.

 

나의 답:

SELECT u.user_id,
       u.email,
       IFNULL(p.point,'0') "point"
 FROM  users u LEFT JOIN point_users p ON u.user_id = p.user_id 
 ORDER BY p.point desc ;

 

정답:

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;

 

답을 도출하기 전에 아래와 같이 풀었는데 조금 더 간결하게 하기 위해 수정했다.

SELECT u.user_id,
       u.email,
       CASE WHEN p.point IS NULL THEN '0'
            ELSE p.point end "point"
 FROM  users u LEFT JOIN point_users p ON u.user_id = p.user_id 
 ORDER BY p.point desc ;

 

위 문제를 풀면서 NULL을 처리하는 다양한 함수를 배웠다. 특히 'COALESCE' 함수는 '여러 인수 중에서 첫 번째로 NULL이 아닌 값을 반환하는 함수'라는 점과 테이블이 단일인지 , JOIN으로 합쳐진 건지에 따라 달라지는 부분도 흥미로웠다.