-
[DBeaver 실습] SQL Lv3. 이용자의 포인트 조회하기내일배움캠프/SQL 2024. 6. 12. 15:39
데이터 설명 이번에는 users와 point_users 테이블 2개를 사용하는 문제인가 봅니다.
문제 문제의 핵심은 다음과 같습니다.
1. users 테이블에는 있지만 point_users에는 없는 user가 있다고 합니다.
2. point_users에 없는 user는 포인트가 없으므로 0으로 처리하라고 합니다.
(즉, NULL값을 0으로 처리)
이제 문제를 풀어봅시다.
STEP 1
point_users에 없는 user의 정보도 출력되어야 하므로 left join을 사용해줍니다.
이 때 point_users와 users에 공통으로 들어있는 user_id를 on로 묶어줍니다.
from users u left join point_users pu on u.user_id = pu.user_id
그럼 위와 같이 point_users 테이블에 없는 값은 NULL값을 보여줍니다.
STEP 2
user_id와 email 그리고 point를 가져옵니다.
point의 NULL값을 0으로 처리해야하므로 coalesce 문법을 사용해줍니다.
coalesce(column, 0): column의 NULL값을 0으로 대체합니다.
⬇️
select u.user_id, u.email, coalesce(pu.point, 0) as point
point의 NULL값이 0으로 대체되어 나오는 게 확인이 됩니다.
⚠️ 주의
이 때 가져오는 칼럼이 어디서 가져오는 테이블인지 써줘야 합니다.
ex) u.user_id, u.email (u는 user의 alias(별칭))
users 테이블이 point_users보다 더 많은 user_id 정보를 가지고 있으므로
반드시 users에서 user_id를 가져와야 합니다.
STEP 3
포인트를 기준으로 내림차순 정렬을 해줍니다.
order by 3 desc
STEP 4
실행해주면...
전체 실행 코드 결과가 잘 나온 것을 확인할 수 있습니다!!
'내일배움캠프 > SQL' 카테고리의 다른 글
[SQL] 서브쿼리(Subquery)가 너무 어려워서 작성한 글 (1) 2024.07.01 [SQL] 식품분류별 가장 비싼 식품의 정보 조회하기 (0) 2024.06.27 [DBeaver 실습] SQL Lv2. 날짜별 획득포인트 조회하기 (1) 2024.06.11 [DBeaver 실습] SQL Lv.1 데이터 속 김서방 찾기 (0) 2024.06.10 문제를 풀며 공부하는 SQL-5 (0) 2024.06.05