[SQL] 11. 프로그래머스 LV.3 조건에 맞는 사용자 정보 조회하기

2025. 7. 20. 14:55·프로그래밍 언어/02. SQL

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

🔍 문제

USED_GOODS_BOARD와 USED_GOODS_USER 테이블에서 중고 거래 게시물을 3건 이상 등록한 사용자의 사용자 ID, 닉네임, 전체주소, 전화번호를 조회하는 SQL문을 작성해주세요. 이때, 전체 주소는 시, 도로명 주소, 상세 주소가 함께 출력되도록 해주시고, 전화번호의 경우 xxx-xxxx-xxxx 같은 형태로 하이픈 문자열(-)을 삽입하여 출력해주세요. 결과는 회원 ID를 기준으로 내림차순 정렬해주세요.

SQL을 실행하며 다음과 같이 나와야 합니다.


🎯정답

첫 번째 방법은 서브쿼리를 활용한 케이스

-- 서브쿼리 활용
SELECT USER_ID,
       NICKNAME,
       CONCAT(CITY, ' ', STREET_ADDRESS1, ' ', STREET_ADDRESS2) AS '전체주소',
       CONCAT(SUBSTR(TLNO, 1, 3), '-', SUBSTR(TLNO, 4, 4), '-', SUBSTR(TLNO, 8, 4)) AS '전화번호'
FROM USED_GOODS_USER U JOIN 
                           (SELECT WRITER_ID
                            FROM USED_GOODS_BOARD
                            GROUP BY WRITER_ID
                            HAVING COUNT(*) >= 3) B
                       ON U.USER_ID = B.WRITER_ID
ORDER BY USER_ID DESC

 

두 번째 방법은 WITH문을 사용해서 정답을 맞힌 케이스인데, WITH문을 이렇게 사용하는구나...

-- WITH 문을 활용
WITH BOARD AS (
    SELECT WRITER_ID
    FROM USED_GOODS_BOARD
    GROUP BY WRITER_ID
    HAVING COUNT(*)>=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,4)) AS 전화번호
FROM USED_GOODS_USER U
JOIN BOARD B ON B.WRITER_ID=U.USER_ID
ORDER BY U.USER_ID DESC

❓풀이

  • FROM 절에서 두 테이블의 병합을 진행하기 위해 판매글 테이블(USED_GOODS_BOARD)테이블에서 WRITER_ID가 3회 이상 존재하는 WRITER_ID만 조회한다.
  • CONCAT을 통해 시, 주소1, 주소2 컬럼을 병합
  • CONCAT과 SUBSTR을 통해 전화번호에 하이픈('-')을 넣어주도록 한다.
    • SUBSTR(문자열, 시작위치, 문자길이) -> 문자열 자르기

 

 

 

'프로그래밍 언어 > 02. SQL' 카테고리의 다른 글

[SQL] 프로그래머스 LV.3 없어진 기록 찾기  (2) 2025.07.27
[SQL] 12. 프로그래머스 LV.3 대장균의 크기에 따라 분류하기 1  (0) 2025.07.27
[SQL] 10. 프로그래머스 LV.3 부서별 평균 연봉 구하기  (0) 2025.07.20
[SQL] 09. 프로그래머스 LV.3 즐겨찾기가 가장 많은 식당 정보 출력하기  (3) 2025.07.18
[SQL] 08. 프로그래머스 LV.3 조건에 맞는 사용자와 총 거래금액 조회하기  (1) 2025.07.18
'프로그래밍 언어/02. SQL' 카테고리의 다른 글
  • [SQL] 프로그래머스 LV.3 없어진 기록 찾기
  • [SQL] 12. 프로그래머스 LV.3 대장균의 크기에 따라 분류하기 1
  • [SQL] 10. 프로그래머스 LV.3 부서별 평균 연봉 구하기
  • [SQL] 09. 프로그래머스 LV.3 즐겨찾기가 가장 많은 식당 정보 출력하기
dalleeoppaa
dalleeoppaa
DA, GIS 공부 기록
  • dalleeoppaa
    달래오빠
    dalleeoppaa
  • 전체
    오늘
    어제
    • 분류 전체보기 (113)
      • GIS (22)
        • 01. GIS TIL (13)
        • 02. OpenSource Geo Data (6)
        • 03.사이드 프로젝트 (1)
      • 프로젝트 (6)
        • 01. 상권분석 지도 (3)
        • 02. olist 고객 RFM 분석 (3)
      • PointCloud (1)
      • 프로그래밍 언어 (58)
        • 01. Python (1)
        • 02. SQL (49)
        • 03. C++ (3)
        • 04. TIL (5)
      • 데이터분석 (23)
        • 01. Google Cloud Platform (1)
        • 02. GA4 & GTM (1)
        • 03. LookerStudio (4)
        • 04. Apach Spark (7)
        • 05. 데이터 시각화 (10)
      • 인턴 (2)
        • 01. NPL (2)
        • 02. TIL (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    SQL
    postgresql연습
    태블로연습
    태블로신병훈련소
    sql코테
    데이터분석가코테
    c++독학
    solvesql
    프로그래머스SQL
    GIS
    데이터분석취준
    태블로부트캠프
    프로그래머스코테
    데이터분석가
    MySQL
    프로그래머스
    프로그래머스lv3
    PostgreSQL
    코딩테스트
    데이터분석
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
dalleeoppaa
[SQL] 11. 프로그래머스 LV.3 조건에 맞는 사용자 정보 조회하기
상단으로

티스토리툴바