2024. 10. 28. 11:37ㆍ부트캠프 TIL
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를 기준으로 조회하면된다. 아이디가 곧 게시물 개수이기때문에
'부트캠프 TIL' 카테고리의 다른 글
[67] 부트캠프 TIL - 본캠프 48일차 (0) | 2024.10.30 |
---|---|
[66] 부트캠프 TIL - 본캠프 47일차 (1) | 2024.10.29 |
[64] 부트캠프 TIL - 본캠프 45일차 (8) | 2024.10.25 |
[63] 부트캠프 TIL - 본캠프 44일차(Spring 조별프로젝트 KPT 회고) (2) | 2024.10.25 |
[62] 부트캠프 TIL - 본캠프 44일차 (1) | 2024.10.24 |