코테 준비 | 프로그래머스 재 구매 회원 구하기 / 조건 별 사용자 조회

2024. 11. 28. 11:28·SQL

Programmers 문제풀이1 (재구매가 일어난 상품과 회원 리스트 구하기)

▶ 문제 POINT

GROUP BY ID / HAINVG 절 집계 사용 

[문제] 

[문제 해석 & 조건]
1. 동일 회원의 재구매 상품 건수 필터링
2. 회원 ID 오름차, 상품 ID 내림차 
3. 회원 ID, 상품 ID 출력 

 

▶ 해결 POINT : 

GROUP BY & HAVING 절 집계 함수 사용

 

[풀이 과정]
1.  재구매 건수

  • USER_ID & PRDUCT_ID 기준 그룹바이 후 PK(ONLINE_SALE_ID) 로 카운팅 한 집계값이 2개 이상일 경우 필터링 ( 문제에서 NULL값 허용하지 않으니 COUNT 파라미터로 아스타 받아도 무방) 

2. 정렬 기준: 내림차
3. 출력 컬럼 기재

SELECT USER_ID
       ,PRODUCT_ID
FROM ONLINE_SALE
GROUP BY USER_ID,PRODUCT_ID
HAVING COUNT(ONLINE_SALE_ID)>1
ORDER BY 1,2 DESC

 

Programmers 문제풀이2 (조건에 맞는 사용자 정보 조회하기)

▶ 문제 POINT

다른 테이블 필터링 조건 참조 & 문자열 양식 변경 하기 

[문제] 

[문제 해석 & 조건]
1. 거래 게시물 3건 이상 등록한 유저 조회
2. 주소 연결, 전화번호 양식 맞추기 
3. 회원 ID 내림차순

 

▶ 해결 POINT : 

WHERE 절 서브쿼리로 필터링 & 다중 컬럼 연결 & 문자열 분할

 

[풀이 과정]


1.  게시글 3건 이상 등록한 유저 필터링

  • 유저의 게시글 정보가 있는 USED_GOODS_BOARD 테이블에서 유저로 그룹바이 한뒤 PK(BOARD_ID) 카운          팅하여 3건 이상일때 WRITER_ID 필터링 해줌 (board 테이블도 전체 null 값 허용 안하므로  astar 써도 무방)
  • 출력기준은 USED_GOODS_USER 테이블 이므로 위 조건 WHERE 절 서브쿼리로 연결해서 필터링 (USER 테이블의 USER_ID (PK) = BOARD 테이블의 WRITER_ID(FK) ) 

2. 전체 주소 구하기

  • 각 컬럼을 CONCAT 으로 연결

3. 전화번호 문자열 분할하여 양식에서 맞춰 출력

  •  CONCAT * SUBSTR 함수 사용 
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
WHERE USER_ID IN  ( SELECT WRITER_ID
                    FROM USED_GOODS_BOARD
                    GROUP BY WRITER_ID
                    HAVING COUNT(BOARD_ID)>=3 
                   )
ORDER BY USER_ID DESC​



[오류 사항]

  • 주소 연결 시, 컬럼 중간에 공백 없으면 오류남 ->공백 추가 해서 해결 완료 

 

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

'SQL' 카테고리의 다른 글

프로젝트1 | DBeaver에서 대용량 데이터 셋(csv) IMPORT 하기 / 오류 상황 해결법  (0) 2024.12.03
코테 준비 | 해커 랭크 BINARY TREE NODES  (0) 2024.11.29
실습 | 다중 컬럼 서브쿼리/ Correlated 서브쿼리/ DBeaver 에서 with문 사용 안될 때 해결 법  (1) 2024.11.21
실습 | EDA / 다중 테이블 JOIN / 서브쿼리 VS 윈도우 함수  (1) 2024.11.20
실습 | JOIN/ GROUP BY/ 서브쿼리/ 순번 지정 윈도우 함수  (0) 2024.11.18
'SQL' 카테고리의 다른 글
  • 프로젝트1 | DBeaver에서 대용량 데이터 셋(csv) IMPORT 하기 / 오류 상황 해결법
  • 코테 준비 | 해커 랭크 BINARY TREE NODES
  • 실습 | 다중 컬럼 서브쿼리/ Correlated 서브쿼리/ DBeaver 에서 with문 사용 안될 때 해결 법
  • 실습 | EDA / 다중 테이블 JOIN / 서브쿼리 VS 윈도우 함수
성장하는 쿠키의 로그 기록
성장하는 쿠키의 로그 기록
성장하는 쿠키의 모든 로그를 담습니다.
  • 성장하는 쿠키의 로그 기록
    쿠키 로그
    성장하는 쿠키의 로그 기록
  • 전체
    오늘
    어제
    • 분류 전체보기 (143) N
      • TODAY I LEARNED (2) N
      • 데이터 분석 (13)
      • SQL (49)
      • PYTHON (39)
      • 통계,검정,머신러닝 (22)
      • TABLEAU (5)
      • 내배캠 | 데이터분석 부트캠프 (12)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    오블완
    Python
    데이터분석
    데이터리안
    코딩테스트준비
    해커랭크
    파이썬
    Wil
    티스토리챌린지
    pandas
    코테준비
    데이터분석프로젝트
    내배캠
    sql코딩테스트
    SQL
    MySQL
    태블로
    머신러닝
    데이터분석가
    프로그래머스
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
성장하는 쿠키의 로그 기록
코테 준비 | 프로그래머스 재 구매 회원 구하기 / 조건 별 사용자 조회
상단으로

티스토리툴바