본문 바로가기

프로그래머스(Oracle)

[프로그래머스 (Oracle)] 조건에 맞는 사용자 정보 조회하기

728x90

코드 힌트

  1. 주소 결합
    • CITY || ' ' || STREET_ADDRESS1 || ' ' || STREET_ADDRESS2를 사용하여 사용자의 주소를 결합하여 전체 주소를 생성합니다.
    • 이는 각 사용자의 주소 정보를 쉽게 확인할 수 있도록 합니다.
  2. 전화번호 포맷 변환
    • REGEXP_REPLACE 함수를 사용하여 전화번호(TLNO)를 특정 형식(\1-\2-\3)으로 변환합니다.
    • 이는 전화번호의 가독성을 높이며, 특정 형식으로 데이터를 출력합니다.
  3. 서브쿼리 사용
    • 서브쿼리를 통해 USED_GOODS_BOARD 테이블에서 작성자 ID(WRITER_ID)를 그룹화하고, 게시글 수가 3개 이상인 작성자만 필터링합니다.
    • 이를 통해 활동성이 높은 사용자만 선택하여 결과를 정제합니다.
  4. 조인 조건
    • ON U.USER_ID = F.WRITER_ID를 사용하여 USED_GOODS_USER 테이블과 서브쿼리 결과를 조인합니다.
    • 이는 조건에 맞는 사용자 정보를 정확하게 가져오기 위해 사용됩니다.
  5. 정렬
    • ORDER BY USER_ID DESC를 통해 사용자 ID를 기준으로 내림차순 정렬하여, 최근에 생성된 사용자 정보를 상단에 표시합니다.

정답은 더보기 클릭

더보기
SELECT USER_ID, NICKNAME, CITY || ' ' || STREET_ADDRESS1 || ' ' || STREET_ADDRESS2 AS 전체주소,
        REGEXP_REPLACE(TLNO, '(\d{3})(\d{4})(\d{4})', '\1-\2-\3') AS 전화번호
  -- 사용자 ID(USER_ID), 닉네임(NICKNAME), 전체 주소(전체주소), 
  -- 전화번호를 정해진 형식으로 변환하여 조회합니다.
  FROM USED_GOODS_USER U
  JOIN (SELECT WRITER_ID
            FROM USED_GOODS_BOARD 
            GROUP BY WRITER_ID
            HAVING COUNT(*) >= 3) F
  -- 3회 이상 게시글을 작성한 사용자만 선택하기 위해 서브쿼리와 조인합니다.
  ON U.USER_ID = F.WRITER_ID
  -- 결과를 사용자 ID 기준으로 내림차순 정렬합니다.
  ORDER BY USER_ID DESC
728x90