SQL Coding Test/[Programmers]

[Programmers] 조건에 맞는 사용자 정보 조회하기 (Lv.3)

duswn1204 2026. 5. 26. 22:50

🔗 문제 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