본문 바로가기
Algorithm/코딩테스트 (SQL)

[프로그래머스][GROUP BY] 조건에 맞는 사용자와 총 거래금액 조회하기

by 싱브이 2023. 12. 27.
728x90
반응형

문제

USED_GOODS_BOARD와 USED_GOODS_USER 테이블에서 완료된 중고 거래의 총금액이 70만 원 이상인 사람의 회원 ID, 닉네임, 총거래금액을 조회하는 SQL문을 작성해주세요. 결과는 총거래금액을 기준으로 오름차순 정렬해주세요.

 

 

 

 

내 생각

1. 회원 ID, 닉네임, 총거래금액을 조회 : SELECT B.USER_ID, B.NICKNAME, SUM(PRICE) AS TOTAL_SALES

2. USED_GOODS_BOARD와 USED_GOODS_USER 테이블에서 : 두 테이블을 사용자 ID를 기준으로 조인 (JOIN)

3. 완료된 중고 거래의 : WHERE STATUS = 'DONE'
4. 사용자 ID를 기준으로 그룹화 : 각 사용자에 대한 거래를 합산하기 위해 

5. 총금액이 70만 원 이상인 사람 : HAVING TOTAL_SALES >= 700000
  → GROUP BY 절 다음에 사용(그룹화된 결과에 대한 조건)

6. 결과는 총거래금액을 기준으로 오름차순 정렬 : ORDER BY TOTAL_SALES

 

 

 

 

더보기

** 참고

1. FROM : SQL은 구문이 들어오면 테이블을 가장 먼저 확인 (테이블명)

2. WHERE :  테이블에서 주어진 조건에 맞는 데이터들을 추출

3. GROUP BY : 공통적인 데이터들끼리 묶어 그룹을 만들어줌

4. HAVING : 공통적인 데이터들이 묶여진 그룹 중, 주어진 주건에 맞는 그룹들을 추출

5. SELECT : 최종적으로 추출된 데이터들을 조회

6. ORDER BY : 추출된 데이터들을 정렬

    * SELECT 에서 만들어진 Alias(AS) 는 ORDER BY 구문에서만 사용 가능

 

* Join

ON : JOIN 전에 조건을 필터링
WHERE : JOIN 후에 조건을 필터링 (join과 모든 조건이 끝난 후, where로 추가 조건)

 

 

 

내 코드

SELECT B.USER_ID, B.NICKNAME, SUM(PRICE) AS TOTAL_SALES
FROM USED_GOODS_BOARD AS A 
JOIN USED_GOODS_USER AS B 
ON A.WRITER_ID = B.USER_ID
WHERE STATUS = 'DONE'
GROUP BY A.WRITER_ID
HAVING TOTAL_SALES >= 700000
ORDER BY TOTAL_SALES
728x90
반응형

댓글