프로그래머스_조건에 맞는 사용자 정보 조회하기

임정민·2023년 5월 24일

SQL 문제풀이

목록 보기
42/53
post-thumbnail

SQL 공부중 입니다. ✍✍✍

문제

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

풀이

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

중고 거래 게시판 TABLE (USED_GOODS_BOARD)에서 게시물을 3개 이상 등록한 유저의 정보를
유저 정보 TABLE (USED_GOODS_USER)을 JOIN 하여 출력하는 문제였습니다. 앞서 다른 문제 풀이에서 많이 참고했었던 서브쿼리을 활용하여 먼저 게시물을 3개 이상 등록한 유저들을 구한 뒤, 유저들의 정보를 출력하는 방식으로 풀었습니다.🦝🦝🦝

저의 풀이 이외에

SELECT U.USER_ID, U.NICKNAME, CONCAT_WS(" ", U.CITY, U.STREET_ADDRESS1, U.STREET_ADDRESS2) AS "전체주소", CONCAT_WS("-", SUBSTRING(U.TLNO, 1, 3), SUBSTR(U.TLNO, 4, 4), RIGHT(U.TLNO, 4)) 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.WRITER_ID) >= 3
ORDER BY B.WRITER_ID DESC

위와 같이 서브쿼리를 활용하지 않고 GROUP BY한 뒤 HAVING 구문으로 WRITER_ID의 횟수를 COUNT() 하여 조건을 걸어둔 풀이 또한 볼 수 있었습니다.🐵🐵🐵

감사합니다.

profile
https://github.com/min731

0개의 댓글