SQL

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

thebuck104 2024. 6. 10. 19:12

 

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

 

 

#상황: 이용자별로 획득한 포인트를 이메일로 보내주기

 

Table_1 Name > user

  • user_id: 익명화된 유저들의 아이디(varchar255)
  • created_at: 아이디 생성 날짜(timestamp)
  • updated_at: 정보 업데이트 날짜(timestamp)
  • name: 익명화된 유저들의 이름(varchar255)
  • email: 이메일(varchar255)

Table_2 Name > user_point

  • point_user_id: user_point 행을 구별하기 위한 key(varchar255)
  • created_at: 아이디 생성 날짜(timestamp)
  • updated_at: 정보 업데이트 날짜(timestamp)
  • user_id: 익명화된 유저들의 아이디(varchar255)
  • point: 보유하고 있는 포인트(int)

 

# 문제: 다음과 같은 결과 테이블을 만들어보자

 

1. user_id: 익명화된 유저들의 아이디

2. email: 유저들의 이메일

3. point: 유저가 획득한 포인트

  • user 테이블에는 있지만 point_user에 있지 않은 user는 포인트가 없으므로 0 으로 처리
  • 포인트 기준으로 내림차순 정렬

 

# 정답:

select A.user_id, A.email, 
coalesce(B.point, 0) as point from users A
inner join point_users B
on A.user_id = B.user_id
group by B.point desc;