«   2025/09   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Recent Posts
Tags more
Today
Total
관리 메뉴

내 인생은 개발 중

[프로그래머스] 조건에 맞는 사용자 정보 조회하기 -MySQL 본문

SQL

[프로그래머스] 조건에 맞는 사용자 정보 조회하기 -MySQL

seul.e 2024. 7. 19. 14:40

https://school.programmers.co.kr/learn/courses/30/lessons/164670

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

1안 풀이

SELECT USER_ID,
       NICKNAME,
       CONCAT(CITY, ' ', STREET_ADDRESS1, ' ', STREET_ADDRESS2) AS '전체주소',
       CONCAT(SUBSTR(TLNO, 1, 3), '-', SUBSTR(TLNO, 4, 4), '-', SUBSTR(TLNO, 8)) 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

2안 풀이

SELECT USER_ID,
       NICKNAME,
       CONCAT(CITY, ' ', STREET_ADDRESS1, ' ', STREET_ADDRESS2) AS '전체주소',
       CONCAT(SUBSTR(TLNO, 1, 3), '-', SUBSTR(TLNO, 4, 4), '-', SUBSTR(TLNO, 8)) AS '전화번호'
FROM USED_GOODS_USER A, USED_GOODS_BOARD B
WHERE A.USER_ID = B.WRITER_ID
GROUP BY WRITER_ID
HAVING COUNT(WRITER_ID) >= 3
ORDER BY USER_ID DESC

처음에는 서브쿼리를 이용해서 풀었는데 성능 측면에서 조인을 사용하는게 더 나을 것 같아 조인으로 다시 풀어보았댜!
이제 서브쿼리 쓰는 문제는 대충 감이 오고 쿼리도 쉽게 작성하는데 이렇게 조인을 사용해서 성능 측면에서 더 좋은 쿼리를 작성할 수 있으니 이런걸 생각해보는 것도 연습해봐야겠댜!!
헤헤 그래도 확실히 풀수록 익숙해지는게 느껴져서 기분 죠타 ㅎㅎㅎ

💡알게 된 점💡

SUBSTR(문자열, 시작위치, 길이) 를 사용하면 문자열을 형식대로 잘라준다.
길이를 입력하지 않으면 지정한 시작위치에서부터 끝까지 잘라준다!

Comments