💡문제 풀이/프로그래머스 - Oracle

조건에 맞는 사용자 정보 조회하기 / 164668

뇌 리셋은 기본이지 2024. 6. 26. 10:21

정보

분류 : GROUP BY

 

문제

문제링크

 

풀이

조       건
   중고 거래 게시물을 3건 이상 등록한 사용자

조회컬럼
   사용자 ID, 닉네임, 전체주소, 전화번호

정렬조건
   회원 ID를 기준으로 내림차순

포맷설정
   전체 주소는 시, 도로명 주소, 상세 주소가 함께 출력
   전화번호의 경우 xxx-xxxx-xxxx 같은 형태로 하이픈 문자열(-)을 삽입
SELECT USER_ID
     , NICKNAME
     , ( CITY 
         || ' ' || STREET_ADDRESS1
         || ' ' || STREET_ADDRESS2
       )       AS "전체주소"
     , ( SUBSTR(TLNO, 1, 3)
         || '-' || SUBSTR(TLNO, 4, 4)
         || '-' || SUBSTR(TLNO, 8)
        )      AS "전화번호"
  FROM USED_GOODS_USER UGU
  JOIN (
         SELECT WRITER_ID
              , COUNT(*)               AS "중고거래게시물건수"
           FROM USED_GOODS_BOARD
          GROUP BY WRITER_ID
         HAVING COUNT(*) >= 3
       ) UGB
    ON UGU.USER_ID = UGB.WRITER_ID
 ORDER BY USER_ID DESC

 

풀이 내용

서브쿼리를 통해 작성자ID별 중고거래 게시물 건수를 뽑아낸 후 USED_GOODS_USER 테이블과 JOIN을 진행해주었다. INNER JOIN이니 각 행에 NULL이 존재하면 자동으로 행 제거가 되니까 내가 출력하고자 하는 컬럼만 SELECT절에 작성해주면 된다. 전체주소와 전화번호는 '||'을 사용하여 문자열을 붙혀서 출력하고자 하는 데이터를 만들어주었다.