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

USED_GOODS_BOARD와 USED_GOODS_USER 테이블에서 중고 거래 게시물을 3건 이상 등록한 사용자의 사용자 ID, 닉네임, 전체주소, 전화번호를 조회하는 SQL문을 작성해주세요. 이때, 전체 주소는 시, 도로명 주소, 상세 주소가 함께 출력되도록 해주시고, 전화번호의 경우 xxx-xxxx-xxxx 같은 형태로 하이픈 문자열(-)을 삽입하여 출력해주세요. 결과는 회원 ID를 기준으로 내림차순 정렬해주세요.

조건에 맞는 사용자 정보 조회하기Lv.3

164670

https://school.programmers.co.kr/learn/courses/30/lessons/164670

해설

  • Name
    JOIN
    Type
    Description

    연산자를 사용하여 USED_GOODS_USER 테이블(UU)과 서브쿼리의 결과(UB)를 조인합니다.

    • USED_GOODS_BOARD 테이블에서 WRITER_ID를 그룹화하고, 각 그룹에 3개 이상의 레코드가 있는 경우(HAVING COUNT(*) >= 3) 해당 WRITER_ID를 선택합니다.

    • JOIN 조건은 UU.USER_ID = UB.WRITER_ID로 테이블의 서브쿼리에서 선택된 WRITER_ID와 일치하는 레코드만을 포함합니다.

  • Name
    SELECT
    Type
    Description

    집 주소와 전화번호 제약 조건을 따라야 합니다. CONCAT과 SUBSTRING을 사용해주세요.

    • 선택된 필드는 UU.USER_ID, UU.NICKNAME, 주소(UU.CITY, UU.STREET_ADDRESS1, UU.STREET_ADDRESS2)를 결합한 전체주소, 그리고 전화번호(UU.TLNO)를 형식화한 전화번호입니다.
  • Name
    ORDER BY
    Type
    Description

    결과는 UU.USER_ID에 따라 내림차순으로 정렬됩니다.

결과적으로, 이 쿼리는 USED_GOODS_BOARD 테이블에서 3개 이상의 게시글을 작성한 사용자(WRITER_ID)에 해당하는 USED_GOODS_USER 테이블의 사용자 정보(USER_ID, NICKNAME, 주소, 전화번호)를 조회하고, 사용자 ID에 따라 내림차순으로 정렬하여 반환합니다.

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

SELECT
    UU.USER_ID, UU.NICKNAME, CONCAT(UU.CITY, ' ', UU.STREET_ADDRESS1, ' ', UU.STREET_ADDRESS2) AS 전체주소, CONCAT(SUBSTRING(UU.TLNO, 1, 3), '-', SUBSTRING(UU.TLNO, 4, 4), '-', SUBSTRING(UU.TLNO, 8, 4)) AS 전화번호
FROM
    USED_GOODS_USER UU
JOIN (
    SELECT
        WRITER_ID
    FROM
        USED_GOODS_BOARD
    GROUP BY
        WRITER_ID
    HAVING
        COUNT(\*) >= 3
    ) AS UB
ON
    UU.USER_ID = UB.WRITER_ID
ORDER BY
    UU.USER_ID DESC;