문제
다음은 중고거래 게시판 정보를 담은 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
'내배캠_Data_3기 > SQL' 카테고리의 다른 글
[코딩연습]조건에 부합하는 중고거래 상태 조회하기 (1) | 2024.09.03 |
---|---|
[코딩연습]특정 옵션이 포함된 자동차 리스트 구하기 (1) | 2024.09.02 |
[코딩연습]최댓값 구하기 (1) | 2024.08.28 |
[코딩연습]재구매가 일어난 상품과 회원 리스트 구하기 (0) | 2024.08.27 |
[코딩연습]프로그래머스_5월 식품들의 총매출 조회하기 (0) | 2024.08.20 |