[사전캠프] 이용자의 포인트 조회하기

2024. 8. 19. 23:54내일배움캠프

문제 : 두 테이블에서 각 이용자의 아이디,  이메일, 총 포인트를 조회하는 쿼리 작성

조건 : 결과 조회시 이용자의 아이디, 이메일, 총 포인트에 대한 컬럼이 조회되어야 하며, 획득한 포인트가 없는 이용자에 대한 정보도 포함하여 출력해야 한다. 마지막으로 출력 결과는 총 포인트 기준으로 내림차순 정렬되어야 한다.

SELECT a.user_id, a.email, SUM(b.point) point
FROM users a LEFT JOIN point_users b ON a.user_id = b.user_id
GROUP BY 1
ORDER BY point DESC

각 이용자의 아이디, 이메일, 총 포인트 조회 결과

 

대상 테이블은 'users(이용자 정보)', 'point_users(사용자 포인트 획득 정보)' 테이블이며, 'user_id(이용자 아이디)', 'email(이메일)', 'point(포인트)' 컬럼 정보를 조회하는 것이 목적이다. 다른 조건은 포인트 획득에 대한 정보가 없어 포인트 정보가 없는 이용자에 대한 정보도 결과에 포함해야 하며 결과는 각 이용자의 총 포인트를 기준으로 내림차순 정렬되어야 한다.

 

포인트 정보가 없는 이용자 정보도 포함하기 위해서 LEFT JOIN 을 사용했다. 대상 테이블로 'users' 를 먼저 지정했기에 사용했으며 만약 'users' 를 두 번째로 지정했다면 RIGHT JOIN 을 사용했을 것이다. GROUP BY 로 각 이용자(user_id, 각 이용자가 갖는 고유값)를 그룹화하고 SUM 을 사용해 이용자가 획득한 포인트의 합계를 구했다. 마지막으로 ORDER BY 를 사용해 획득한 포인트(point)를 기준으로 내림차순(DESC) 정렬하였다.