해당 문제에는 USER_ID, NICKNAME, 전체주소, 전화번호를 테이블에서 추출하는 문제이다.
그중에서 USER_GOODS_USER 테이블을 통해 CITY, STREET_ADDRESS1, STREET_ADDRESS2를 한 컬럼에 합치기 위해 CONCAT함수를 이용하여 컬럼을 합친 변수명을 전체주소로 표기한다.
그러나 전화번호는 TLNO에서만 추출하지만 추출한 3개의 배열을 하나로 합쳐야 하기에 CONCAT과 SUBSTRING을 함께 사용해야 한다.
EX)
01012345678
- SUBSTRING(U.TLNO, 1, 3): 첫 세 자리를 추출하여 "010"을 반환한다.
- SUBSTRING(U.TLNO, 4, 4): 네 번째 문자부터 네 자리를 추출하여 "1234"를 반환한다.
- SUBSTRING(U.TLNO, 8, 4): 여덟 번째 문자부터 네 자리를 추출하여 "5678"을 반환한다.
SUBSTRING 중간에 '-' 붙이고 CONCAT함수를 이용해 각 SUBSTRING을 이어붙여 전화번호 열을 만든다.
->010-1234-5678
SELECT
U.USER_ID,
MIN(U.NICKNAME) AS NICKNAME,
CONCAT(U.CITY, ' ', U.STREET_ADDRESS1, ' ', U.STREET_ADDRESS2) AS '전체주소',
CONCAT(
SUBSTRING(U.TLNO, 1, 3), '-',
SUBSTRING(U.TLNO, 4, 4), '-',
SUBSTRING(U.TLNO, 8, 4)
) AS '전화번호'
FROM
USED_GOODS_BOARD B
JOIN USED_GOODS_USER U ON B.WRITER_ID = U.USER_ID
GROUP BY
U.USER_ID, U.CITY, U.STREET_ADDRESS1, U.STREET_ADDRESS2, U.TLNO
HAVING
COUNT(B.BOARD_ID) >= 3
ORDER BY
U.USER_ID DESC;
'SQL 정리' 카테고리의 다른 글
with (5) | 2024.07.24 |
---|---|
OUTER, 테이블 여러개를 JOIN해야되는 경우 (2) | 2024.07.23 |
SQL정리. 6 (USING) (0) | 2024.07.08 |
SQL 정리 .5 (0) | 2024.07.04 |
SQL 정리. 4 (0) | 2024.07.03 |