[SQL] 연습

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

Simon Yoon 2024. 10. 23. 19:43
SELECT T1.USER_ID, T1.NICKNAME, CONCAT(T1.CITY, " ", T1.STREET_ADDRESS1, " ", T1.STREET_ADDRESS2) "전체주소", CONCAT(LEFT(T1.TLNO, 3), "-", MID(T1.TLNO, 4, 4), "-", RIGHT(T1.TLNO, 4)) "전화번호"
FROM USED_GOODS_USER T1
INNER JOIN
(SELECT WRITER_ID, COUNT(1) CNT
FROM USED_GOODS_BOARD
GROUP BY WRITER_ID
HAVING CNT >= 3
) T2
ON T1.USER_ID = T2.WRITER_ID
ORDER BY T1.USER_ID DESC
;

문제:

USED_GOODS_BOARD 와 USED_GOODS_USER 테이블에서 중고 거래 게시물을 3건 이상 등록한 사용자의 사용자 ID, 닉네임, 전체주소, 전화번호를 조회

- "전체주소"는 시, 도로명 주소, 상세 주소가 함께 출력

- "전화번호"는 xxx-xxxx-xxxx 같은 형태로 출력

- 결과는 회원 ID 를 기준으로 내림차순 정렬

 

해결방법:

1. USED_GOODS_BOARD 테이블에서 작성자별 게시물 건수를 3건 이상에 대한 조건을 설정하여 조회

2. 1 에서 조회한 테이블을 USER 테이블과 INNER JOIN

3. "전체주소"와 "전화번호"는 CONCAT() 을 사용하여 결합

4. "전화번호"는 기존 전화번호 값에서 LEFT, MID, RIGHT 함수를 사용하고 하이픈을 추가

 

예시코드: