Notice
Recent Posts
Recent Comments
Link
Welcome! Everything is fine.
[프로그래머스/Lv.3] 조건에 맞는 사용자 정보 조회하기 - MySQL 본문
728x90
📌 문제
📌 제출한 오답
전화번호를 xxx-xxxx-xxxx 과 같은 형태로 만드는 방법을 몰라서 찾아보았는데, SUBSTR의 사용법을 잘못 알고 시도해 원하는 결과가 나오지 않았다. SUBSTR(U.TLNO, 1, 3)이 1부터 3까지의 인덱스를 의미하는게 아니라 인덱스 1에서부터 3만큼 자른다는 의미였다. 또한 내림차순 정렬을 깜빡해 오답 처리 되었다.
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)) AS 전화번호
FROM USED_GOODS_BOARD AS B JOIN USED_GOODS_USER AS U ON B.WRITER_ID = U.USER_ID
GROUP BY B.WRITER_ID
HAVING COUNT(B.BOARD_ID) >= 3
ORDER BY U.USER_ID;
📌 정답
내림차순 정렬로 바꿔주었고, STREET_ADDRESS2는 Nullable이 TRUE로 명시되어 있어 NULL일 때는 아무것도 들어가지 않도록 바꿨다.(이건 없어도 정상 채점이 되는 것으로 보인다.) 나머지는 원래 코드와 똑같다.
SELECT U.USER_ID, U.NICKNAME,
CONCAT(U.CITY, ' ', U.STREET_ADDRESS1, ' ', IFNULL(U.STREET_ADDRESS2, '')) AS 전체주소,
CONCAT(SUBSTR(U.TLNO,1,3), '-', SUBSTR(U.TLNO,4,4), '-', SUBSTR(U.TLNO,8)) AS 전화번호
FROM USED_GOODS_BOARD B JOIN USED_GOODS_USER U ON B.WRITER_ID = U.USER_ID
GROUP BY B.WRITER_ID
HAVING COUNT(B.BOARD_ID) >= 3
ORDER BY U.USER_ID DESC;
📌 기억할 것
- SUBSTR(문자열, 시작위치, 길이)
- 문자열을 뒤에서부터 자를 때는 시작 위치에 음수를 입력한다.
'프로그래머스 > SQL' 카테고리의 다른 글
[프로그래머스/Lv.2] 최댓값 구하기 - MySQL (0) | 2024.04.02 |
---|---|
[프로그래머스/Lv.1] 특정 옵션이 포함된 자동차 리스트 구하기 - MySQL (1) | 2024.04.02 |
[프로그래머스/Lv.3] 없어진 기록 찾기 - MySQL (0) | 2024.04.02 |
[프로그래머스/Lv.3] 즐겨찾기가 가장 많은 식당 정보 출력하기 - MySQL (0) | 2024.03.30 |
[프로그래머스/Lv.4] 5월 식품들의 총매출 조회하기 - MySQL (0) | 2024.03.30 |