내배캠_Data_3기/SQL

[코딩연습]조건에 맞는 사용자 정보 조회하기

케일라(Data_3기) 2024. 8. 29. 09:56

문제

 다음은 중고거래 게시판 정보를 담은 USED_GOODS_BOARD 테이블과 중고거래 게시판 첨부파일 정보를 담은 USED_GOODS_USER 테이블이다.

 USED_GOODS_BOARD테이블은 다음과 같다. BOARD_ID는 게시글 ID, WRITER_ID는 작성자 ID, TITLE은 게시글 제목, CONTENTS는 게시글 내용, PRICE는 가격, CREATED_DATE는 작성일, STATUS는 거래상태, VIEWS는 조회수를 의미한다. 

 USED_GOODS_USER 테이블은 다음과 같다. USER_ID는 회원 ID, NICKNAME은 닉네임, CITY는 시,  STREET_ADDRESS1는 도로명 주소, STREET_ADDRESS2은 상세주소, TLNO는 전화번호를 의미한다.

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

조건

  • 어떤 테이블에서 데이터를 뽑을 것인가 : USED_GOODS_USER, USED_GOODS_BOARD
  • 어떤 컬럼을 이용할 것인가 : USER_ID, NICKNAME,  CITY, STREET_ADDRESS1, STREET_ADDRESS2, TLNO
  • 어떤 조건을 지정해야 하는가 : 중고거래 게시물을 3건 이상 등록한 사용자
  • 어떤 함수(수식)을 이용해야 하는가 : JOIN, CONCAT, SUBSTR, GROUP BY, HAVING, COUNT(), ORDER BY
SELECT B.USER_ID, B.NICKNAME, 
        CONCAT(B.CITY,' ',B.STREET_ADDRESS1,' ',B.STREET_ADDRESS2) AS 전체주소, 
        CONCAT(SUBSTR(B.TLNO,1,3),'-',SUBSTR(B.TLNO,4,4),'-',SUBSTR(B.TLNO,8)) AS 전화번호
FROM USED_GOODS_BOARD AS A JOIN USED_GOODS_USER AS B ON A.WRITER_ID=B.USER_ID
GROUP BY B.USER_ID
HAVING COUNT(A.WRITER_ID)>=3
ORDER BY B.USER_ID DESC

 

주소를 합칠 때 띄어쓰기 넣기, 합치는 함수 CONCAT, 자르는 함수 SUBSTR