🔗 문제 link : https://school.programmers.co.kr/learn/courses/30/lessons/164670
🖥️ 문제 풀이
SELECT
U.USER_ID,
U.NICKNAME,
CONCAT(U.CITY, ' ', U.STREET_ADDRESS1, ' ', U.STREET_ADDRESS2) AS '전체주소',
CONCAT(
SUBSTR(U.TLNO, 1, 3), '-',
SUBSTR(U.TLNO, 4, 4), '-',
SUBSTR(U.TLNO, 8, 4)
) AS '전화번호'
FROM USED_GOODS_BOARD B
JOIN USED_GOODS_USER U ON B.WRITER_ID = U.USER_ID
GROUP BY B.WRITER_ID, U.USER_ID, U.NICKNAME
HAVING COUNT(B.WRITER_ID) >= 3
ORDER BY B.WRITER_ID DESC;
💡 문제 해결
전화번호 형식 바꾸기 (SUBSTR + CONCAT)
원본:
01053422914
출력 형식:
010-5342-2914
사용 코드:
CONCAT(
SUBSTR(U.TLNO, 1, 3), '-',
SUBSTR(U.TLNO, 4, 4), '-',
SUBSTR(U.TLNO, 8, 4)
)
SUBSTR()란 문자열에서 원하는 위치부터 특정 길이만큼 잘라오는 함수
문법:
SUBSTR(컬럼명, 시작위치, 길이)
예:
SUBSTR('01053422914', 1, 3)
→ 1번째 문자부터 3글자 추출
결과:
010
전체 흐름:
SUBSTR(U.TLNO, 1, 3) → 010
SUBSTR(U.TLNO, 4, 4) → 5342
SUBSTR(U.TLNO, 8, 4) → 2914
'SQL Coding Test > [Programmers]' 카테고리의 다른 글
| [Programmers] 대장균의 크기에 따라 분류하기 2 (Lv.3) (0) | 2026.05.26 |
|---|---|
| [Programmers] 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기 (Lv.3) (0) | 2026.05.26 |
| [Programmers] 오랜 기간 보호한 동물(2) (Lv.3) (0) | 2026.05.26 |
| [Programmers] 조건에 맞는 개발자 찾기 (Lv.2) (0) | 2026.05.24 |
| [Programmers] 연도별 대장균 크기의 편차 구하기 (Lv.2) (0) | 2026.05.23 |