250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 활성사용자수
- 윈도우함수
- 위키독스
- leetcode
- mysql
- 코테준비
- sql문풀
- 그로스해킹
- SQL
- leetcode문풀
- 서브쿼리
- with절
- 프로그래머스문풀
- levle1
- 데이터리안실전반
- 셀프조인
- sql50
- 약수구하기
- 파이썬
- 데이터리안
- 프로그래머스
- SQL테스트
- 데벨챌
- 파이썬문풀
- 티스토리챌린지
- 문풀
- 오블완
- 데이터리안넥스트레벨챌린지
- join
- SQL고득점KIT
Archives
- Today
- Total
꿈은 데이터분석가, 취미는 계획
[MY SQL] 부모,자식관계를 업그레이드 아이템으로 이해하기 본문
728x90
출처: [프로그래머스 스쿨 - 코딩테스트 연습 - MY SQL 문제] : 업그레이드 된 아이템 구하기
링크: https://school.programmers.co.kr/learn/courses/30/lessons/273711
문제(일부): 아이템의 희귀도가 'RARE'인 아이템들의 모든 다음 업그레이드 아이템의
아이템 ID(ITEM_ID), 아이템 명(ITEM_NAME), 아이템의 희귀도(RARITY)를 출력
0. 문제풀이 포인트
1) 업그레이드 전의 희귀도가 'RARE'인지 확인
2) A테이블의 부모ID와 B테이블의 자식의 부모ID가 일치
3) ITEM_ID가 일치하는 것을 기준으로 ITEM_INFO가져오기
1. JOIN 여러번 하기
1) 업그레이드 전 ITEM_IFNO의 테이블을 II1, 업그레이드 후 테이블을 II2로 사용
2) II1과 ITEM_TREE인 IT를 조인할 때 조건으로 부모, 자식 일치 확인
3) II2와 IT를 조인할 때 ITEM_ID를 조건으로하여 ITEM정보 가져오기
4) WHERE절에서 업그레이드 전 테이블을 기준으로 희귀도 RARE만 필터링
SELECT II_2.ITEM_ID, II_2.ITEM_NAME, II_2.RARITY
FROM ITEM_INFO II_1
JOIN ITEM_TREE IT ON II_1.ITEM_ID = IT.PARENT_ITEM_ID
JOIN ITEM_INFO II_2 ON II_2.ITEM_ID = IT.ITEM_ID
WHERE II_1.RARITY = 'RARE'
ORDER BY II_2.ITEM_ID DESC
2. JOIN과 서브쿼리 활용하기
1) 1번과 동일하게 ITEM_ID가 같은 것에 대한 정보를 가져옴
2) 서브쿼리로 부모와 자식의 일치 및 희귀도 RARE를 필터링
SELECT II.ITEM_ID, II.ITEM_NAME, II.RARITY
FROM ITEM_INFO II
JOIN ITEM_TREE IT ON II.ITEM_ID = IT.ITEM_ID
WHERE IT.PARENT_ITEM_ID IN (
SELECT ITEM_ID
FROM ITEM_INFO
WHERE RARITY = 'RARE'
)
ORDER BY II.ITEM_ID DESC;
728x90
'SQL > SQL문풀' 카테고리의 다른 글
[MY SQL] 그룹별로 필터링 조건이 있는 경우 (0) | 2024.04.16 |
---|---|
[MY SQL] 특정 그룹에서 가장 비싼 제품의 정보 가져오기 (0) | 2024.04.16 |
[MY SQL] 크기를 기준으로 비율별 그룹(등급) 만들기 (0) | 2024.04.10 |
[MY SQL] 가장 큰 값을 기준으로 편차 구하기 (0) | 2024.04.08 |
[MY SQL] 문자열 결합함수 CONCAT과 CONCAT_WS 차이 (0) | 2024.04.08 |