https://school.programmers.co.kr/learn/courses/30/lessons/164670
문제 설명
- Lv 3 문제
- 중고거래 게시물을 3건 이상 등록한 사용자 정보 조회
- 사용자 ID, 닉네임, 전체 주소, 전화번호
- 전체 주소는 시 + 도로명주소 + 상세주소 , 전화번호 xxx-xxxx-xxxx 형식으로 출력
- 결과는 회원 ID 기준으로 내림차순 정렬
문제 풀이
SELECT USER_ID,
NICKNAME,
CONCAT(CITY, ' ', STREET_ADDRESS1, ' ', STREET_ADDRESS2) AS '전체주소',
CONCAT(LEFT(TLNO, 3), '-', SUBSTR(TLNO, 4, 4) ,'-', RIGHT(TLNO, 4)) AS '전화번호'
FROM USED_GOODS_USER
WHERE USER_ID IN (SELECT WRITER_ID
FROM USED_GOODS_BOARD
GROUP BY WRITER_ID
HAVING COUNT(*) >= 3)
ORDER BY USER_ID DESC;
◼️ 서브쿼리로 사용자 ID 별 게시물을 3건 이상 등록한 사용자 ID 구하기
- 서브쿼리에서 WRITER_ID 칼럼으로 그룹화한 후, WRITER_ID 별로 등록한 게시물이 3건 이상인 WRITER_ID 만 추출
- 메인쿼리에서 서브쿼리의 WRITER_ID와 일치하는 USER_ID 정보만 추출
◼️ CONCAT 함수를 사용해서 전체주소, 전화번호를 주어진 형식에 맞게 출력
- CONCAT 함수: 여러 문자열을 입력한 순서대로 합쳐서 반환해주는 함수
- 전체주소는 'CITY(시) STREET_ADDRESS1(도로명 주소) STREET_ADDRESS2(상세 주소)'
- 전화번호는 'xxx-xxxx-xxxx'
- TLNO 컬럼은 -(하이픈)이 없기 때문에 문자열을 잘라서 사용해야 한다.
이때, LEFT, RIGHT 함수를 사용해서 양 옆 3자리, 4자리 숫자를 자르고, SUBSTR 함수를 사용해서 중간 4자리 숫자를 자른다.
◼️ ORDER BY 로 회원 ID 기준 내림차순으로 정렬
'PS > SQL' 카테고리의 다른 글
[프로그래머스][SQL] 자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기 (0) | 2024.06.18 |
---|---|
[프로그래머스][SQL] 조건에 부합하는 중고거래 상태 조회하기 (0) | 2024.06.18 |
[프로그래머스][SQL]업그레이드 할 수 없는 아이템 구하기 (0) | 2024.06.11 |
[프로그래머스][SQL] 자동차 평균 대여 기간 구하기 (0) | 2024.06.09 |
[프로그래머스][SQL] 프로그래머스 SQL 문제 풀이 (1) (0) | 2024.06.04 |