PRACTICE/SQL 108

[MySQL] 3단계 20. 물고기 종류 별 대어 찾기

문제 링크https://school.programmers.co.kr/learn/courses/30/lessons/293261SELECT A.ID, B.FISH_NAME, A.LENGTHFROM FISH_INFO AJOIN FISH_NAME_INFO B ON A.FISH_TYPE = B.FISH_TYPEJOIN ( SELECT FISH_TYPE, MAX(LENGTH) AS MAX_LENGTH FROM FISH_INFO GROUP BY FISH_TYPE) C ON A.FISH_TYPE = C.FISH_TYPE AND A.LENGTH = C.MAX_LENGTHORDER BY A.ID; 서브쿼리 CFISH_INFO 테이블에서 FISH_TYPE별로 가장 큰 길이 (MAX(LENGTH))를 계산하여..

PRACTICE/SQL 2025.01.24

[MySQL] 3단계 19. 업그레이드 할 수 없는 아이템 구하기

문제 링크https://school.programmers.co.kr/learn/courses/30/lessons/273712SELECT I.ITEM_ID, I.ITEM_NAME, I.RARITYFROM ITEM_INFO I LEFT JOIN ITEM_TREE T ON I.ITEM_ID = T.PARENT_ITEM_IDWHERE T.PARENT_ITEM_ID IS NULLORDER BY 1 DESC 각 아이템의 부모가 되는 아이템들을 찾아 연결ITEM_TREE 테이블에 부모가 없는 아이템(즉, 업그레이드가 불가능한 최상위 아이템)만 남김.ORDER BY 1 → 첫 번째 컬럼을 기준으로 정렬하라는 뜻 → ORDER BY I.ITEM_ID와 같은 의미

PRACTICE/SQL 2025.01.24

[MySQL] 3단계 18. 대장균들의 자식의 수 구하기

문제 링크https://school.programmers.co.kr/learn/courses/30/lessons/299305SELECT PARENT.ID, COUNT(CHILD.ID) AS CHILD_COUNTFROM ECOLI_DATA PARENT LEFT JOIN ECOLI_DATA CHILDON PARENT.ID = CHILD.PARENT_IDGROUP BY PARENT.IDORDER BY PARENT.ID 1. 셀프 조인(Self Join)이란?같은 테이블을 두 번 사용하여 서로 연결하는 방식같은 테이블을 서로 다른 역할(예: 부모와 자식)로 간주할 때 유용하게 쓸 수 있다.  예를 들어, 이 문제와 같이 대장균 개체가 부모와 자식으로 이어지는 관계를 갖고 있고,  그 관계가 같은 테이블에 저장돼..

PRACTICE/SQL 2025.01.23

[MySQL] 3단계 17. 특정 조건을 만족하는 물고기별 수와 최대 길이 구하기

문제 링크https://school.programmers.co.kr/learn/courses/30/lessons/298519SELECT COUNT(*) AS FISH_COUNT, MAX(LENGTH) AS MAX_LENGTH, FISH_TYPEFROM FISH_INFOGROUP BY FISH_TYPEHAVING AVG(CASE WHEN LENGTH IS NULL THEN 10 ELSE LENGTH END) >= 33ORDER BY FISH_TYPE;조건에서 10CM 이하인 물고기는 길이를 10CM로 처리하라 했음CASE문으로 조건 처리 해주고 평균 길이가 33CM 이상인 물고기들을 필터링한다.

PRACTICE/SQL 2025.01.21

[MySQL] 3단계 15. 헤비 유저가 소유한 장소

문제 링크https://school.programmers.co.kr/learn/courses/30/lessons/77487SELECT ID, NAME, HOST_IDFROM PLACESWHERE HOST_ID IN ( SELECT HOST_ID FROM PLACES GROUP BY HOST_ID HAVING COUNT(ID) >= 2)ORDER BY ID; 1. 서브쿼리: HOST_ID 기준으로 그룹화한 후,  등록한 공간 수(COUNT(ID))가 2개 이상인 HOST_ID만 추출해 헤비 유저 목록을 만든다. 2. 메인 쿼리: PLACES 테이블에서 WHERE HOST_ID IN (...) 조건을 통해  헤비 유저가 등록한 공간만 조회한다. 3. 정렬: 최종적으로 ID 기준으로 오름..

PRACTICE/SQL 2025.01.19

[MySQL] 3단계 14. 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기

문제 링크https://school.programmers.co.kr/learn/courses/30/lessons/164671SELECT CONCAT('/home/grep/src/', A.BOARD_ID, '/', B.FILE_ID, B.FILE_NAME, B.FILE_EXT) AS FILE_PATHFROM USED_GOODS_BOARD AJOIN USED_GOODS_FILE B ON A.BOARD_ID = B.BOARD_IDWHERE A.VIEWS = (SELECT MAX(VIEWS) FROM USED_GOODS_BOARD)ORDER BY B.FILE_ID DESC;ㄴ WHERE 절에서 집계 함수를 사용하지 못하므로 서브쿼리 사용함WHERE A.VI..

PRACTICE/SQL 2025.01.18

[MySQL] 3단계 13. 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기

문제 링크https://school.programmers.co.kr/learn/courses/30/lessons/157340SELECT CAR_ID,(CASE WHEN CAR_ID IN ( SELECT CAR_ID FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY WHERE '2022-10-16' BETWEEN START_DATE AND END_DATE)THEN '대여중'ELSE '대여 가능'END) AS 'AVAILABILITY'FROM CAR_RENTAL_COMPANY_RENTAL_HISTORYGROUP BY CAR_IDORDER BY CAR_ID DESC 1. 서브쿼리 사용서브쿼리를 사용해 2022-10-16에 대여 중인 CAR_ID 목록을 반환한다. 특정 날짜(..

PRACTICE/SQL 2025.01.18

[MySQL] 3단계 12. 대장균의 크기에 따라 분류하기 1

문제 링크https://school.programmers.co.kr/learn/courses/30/lessons/299307SELECT ID, CASE WHEN SIZE_OF_COLONY 100 AND SIZE_OF_COLONY  문제 조건대장균 개체의 크기가 100 이하라면 'LOW', 100 초과 1000 이하라면 'MEDIUM', 1000 초과라면 'HIGH' 라고 분류하세요.대장균 개체의 ID(ID) 와 분류(SIZE)를 출력하는 SQL 문을 작성하세요.결과는 개체의 ID 에 대해 오름차순 정렬해주세요. ㄴ CASE문 사용해주면 된다요 CASE문을 아래와 같이 지정해도 정답이 된다.조건의 순서에 따라 CASE문이 첫 번째로 일치하는 조건을 적용하기 때문에 유효함!CASE WHEN SIZE_..

PRACTICE/SQL 2025.01.17
320x100