조건에 맞는 사용자 정보 조회하기
문제 출처
코딩테스트 연습 - 조건에 맞는 사용자 정보 조회하기 | 프로그래머스 스쿨 (programmers.co.kr)
Code
SELECT USER_ID,
NICKNAME,
CONCAT(CITY," " ,STREET_ADDRESS1," " ,STREET_ADDRESS2) AS "전체주소",
CONCAT(
SUBSTRING(TLNO, 1, 3),
'-',
SUBSTRING(TLNO, 4, 4),
'-',
SUBSTRING(TLNO, 8)
) AS "전화번호"
FROM USED_GOODS_BOARD A JOIN USED_GOODS_USER B ON WRITER_ID = USER_ID
GROUP BY USER_ID
HAVING COUNT(*) >= 3
ORDER BY USER_ID DESC
#USED_GOODS_BOARD와 USED_GOODS_USER 테이블에서
#---> FORM에 나올 2 테이블을 설명해주고있다.
#중고 거래 게시물을 3건 이상 등록한
#---> 조건문을 설명해주고있다.
#사용자의 사용자 ID, 닉네임, 전체주소, 전화번호를 조회하는 SQL문을 작성해주세요.
#---> SELECT에 표시해줄 컬럼들을 설명해주고있다.
#이때, 전체 주소는 시, 도로명 주소, 상세 주소가 함께 출력되도록 해주시고,
#---> 출력방법에대해 설명해주고있다.
#전화번호의 경우 xxx-xxxx-xxxx 같은 형태로 하이픈 문자열(-)을 삽입하여 출력해주세요.
#---> SELECT에 표시해줄 FORMAT을 말해주고있다.
#결과는 회원 ID를 기준으로 내림차순 정렬해주세요.
#---> 정렬방법에대해 설명해주고있다.
Code설명 & TIPS
풀이 방법
USED_GOODS_BOARD와 USED_GOODS_USER 테이블에서
---> FORM에 나올 2 테이블을 설명해주고있다.
중고 거래 게시물을 3건 이상 등록한
---> 조건문을 설명해주고있다.
사용자의 사용자 ID, 닉네임, 전체주소, 전화번호를 조회하는 SQL문을 작성해주세요.
---> SELECT에 표시해줄 컬럼들을 설명해주고있다.
이때, 전체 주소는 시, 도로명 주소, 상세 주소가 함께 출력되도록 해주시고,
---> 출력방법에대해 설명해주고있다.
전화번호의 경우 xxx-xxxx-xxxx 같은 형태로 하이픈 문자열(-)을 삽입하여 출력해주세요.
---> SELECT에 표시해줄 FORMAT을 말해주고있다.
결과는 회원 ID를 기준으로 내림차순 정렬해주세요.
---> 정렬방법에대해 설명해주고있다.
설명
조건은 단순하게 3가지 이상 중첩되는 경우가 있으면 되니 group을 시켜준 뒤 count를 사용하여 조건문을 완성하였고
문제는 SELECT에서 어떻게 표현해줄까가 문제인데
기존 블로그 작성을 보면 LIKE보다 CONCAT을 주로 사용했던 나로썬 정말 쉬울수 없는 문제였다.
다만 SUBSTRING이 조금 낯설 수 있는데 이건 FORMAT과 비슷하게 데이터를 나눠주는 역할을 하고있다. 그걸 CONCAT으로 묶으니 저렇게 단순하게 작성할 수 있는것이다.
다만 주의할점이 POSTGRESQL은 사용방식이 조금 다르다
POSTGRESQL은
SELECT
SUBSTRING(phone_number FROM 1 FOR 3) || '-' ||
SUBSTRING(phone_number FROM 4 FOR 4) || '-' ||
SUBSTRING(phone_number FROM 8) AS formatted_phone_number
FROM your_table;
이런형식으로 작성하면 된다.(사실 큰 차이는 없다)
티스토리와 깃허브 홈
오류나 궁금하신점은
아래 댓글로 알려주시면 감사하겠습니다.
'프로그래머스' 카테고리의 다른 글
(MySQL / 프로그래머스) 조건별로 분류하여 주문상태 출력하기 (1) | 2023.11.13 |
---|---|
(MySQL / 프로그래머스) 특정 옵션이 포함된 자동차 리스트 구하기 (0) | 2023.11.13 |
(MySQL / 프로그래머스) 우유와 요거트가 담긴 장바구니 (0) | 2023.11.07 |
(MySQL / 프로그래머스) 대여 기록이 존재하는 자동차 리스트 구하기 (0) | 2023.10.25 |
(MySQL / 프로그래머스) 자동차 대여 기록에서 장기/단기 대여 구분하기 (0) | 2023.10.25 |