OkBublewrap

조건에 맞는 사용자 정보 조회하기 본문

개발/SQL

조건에 맞는 사용자 정보 조회하기

옥뽁뽁 2025. 1. 14. 09:39

문제 : 조건에 맞는 사용자 정보 조회하기

문제

  1. 중고 거래 게시물을 3건 이상 등록한 사용자
  2. 사용자 ID, 닉네임, 전체주소, 전화번호
  3. 전체 주소 : 시 도로명 주소 상세 주소
  4. 전화번호 : xxx-xxxx-xxxx
  5. 회원 ID 기준으로 내림차순

풀이

1. JOIN 활용

USED_GOODS_BOARDUSED_GOODS_USERWRITER_IDUSER_ID를 기준으로 조인

select *
from used_goods_board ub
join used_goods_users uu on ub.writer_id = uu.user_id

2. GROUP BY, having 집계 함수 사용

group by `having count(1) >= 3 사용하여 조건 1 만족

select *
from used_goods_board ub
join used_goods_users uu on ub.writer_id = uu.user_id
group by ub.writer_id
having count(1) >= 3

3. 전체 주소, 전화 번호

concat 함수 이용, substr 함수 이용

select uu.user_id,
    uu.nickname,
    concat(uu.city, ' ', uu.street_address1, ' ', street_address2) as 전체주소,
    concat(substr(uu.tlno, 1, 3), '-', substr(uu.tlno, 4, 4), '-', substr(uu.tlno, 8,4)) as 전화번호
from used_goods_board ub
join used_goods_users uu on ub.writer_id = uu.user_id
group by ub.writer_id
having count(1) >= 3

4. 정렬 및 전체코드

select uu.user_id,
    uu.nickname,
    concat(uu.city, ' ', uu.street_address1, ' ', street_address2) as 전체주소,
    concat(substr(uu.tlno, 1, 3), '-', substr(uu.tlno, 4, 4), '-', substr(uu.tlno, 8,4)) as 전화번호
from USED_GOODS_BOARD ub
join USED_GOODS_USER uu on ub.writer_id = uu.user_id
group by ub.WRITER_ID
having count(1) >= 3
order by 1 desc