[65] 부트캠프 TIL - 본캠프 46일차

2024. 10. 28. 11:37부트캠프 TIL

728x90

1. 프로그래머스 사용

1-1)  sql 문제 : 조건에 맞는 사용자 정보 조회하기

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

 

 

문제풀이)

1) 문제를 읽고 필요한 조건들을 체크한다

- 사용자id, 닉네임, 전체주소, 전화번호 조회

 

2) 전체주소는 시,도로명주소, 상세주소를 함께 붙여서 출력

- CONCAT()함수 활용하여 문자열 합치기

 

3) 전화번호의 경우 xxx-xxxx-xxxx의 형태로 하이픈을 넣기.

- CONCAT()함수와 SUBSTR()를 함께 활용하여 하이픈 넣기

 

4) 게시물 3개 이상 등록한 사용자 목록 출력

- GROUP BY HAVING으로 사용자id의 개수를 3개이상으로 조회하도록 설정

 

5) 최종 완성 쿼리문

-

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, 4)) as "전화번호"
FROM USED_GOODS_BOARD a LEFT JOIN USED_GOODS_USER b ON a.WRITER_ID = b.USER_ID
GROUP BY A.WRITER_ID HAVING COUNT(A.WRITER_ID) >= 3 
ORDER BY b.USER_ID DESC

- 예시출력문에서 확인할 수 있듯이 주소간에 공백이 존재하기때문에 전체주소 조회할때 공백을 넣어서 간격유지를 해줘야함.

- SUBSTR()만 사용하면 숫자가 3,4,4로 잘리기때문에 CONCAT()을 활용해서 다 합쳐주고, 그 사이에 주소의 공백처럼 하이픈을 넣어줘서 전체 형태를 맞춰주면된다.

- 게시물 3개이상 조건의 GROUP BY HAVING은 작성자ID를 기준으로 조회하면된다. 아이디가 곧 게시물 개수이기때문에

728x90