본문 바로가기

분류 전체보기31

[프로그래머스 / MySQL / Lv.3 대장균의 크기에 따라 분류하기 2] 문제설명문제👇 이전에 풀었던 문제는 대장균 개체의 크기 분류를 구하는 문제였다면  [프로그래머스 / MySQL / Lv.3 대장균의 크기에 따라 분류하기 1]문제설명문제풀이SELECT ID,CASE WHEN SIZE_OF_COLONY  👉 CASE WHEN~THEN~ELSE ENDCASE WHEN 조건식1 THEN 결과1           WHEN 조건식2 THEN 결과2                        .......           WHEN 조건식n THEN 결과nanalytic-catcher.tistory.com이번에는 상위 퍼센트(백분위)를 기준으로 구간을 나눠야하는 문제이다.풀이SELECT ID, CASE WHEN CUME_DIST() OVER (ORDER BY SIZE_.. 2025. 3. 27.
[프로그래머스 / MySQL / Lv.4 특정 세대의 대장균 찾기] 문제설명문제👇 이전에 풀었던 문제는 개체 ID별 자식의 수를 구하는 문제였다면  [프로그래머스 / MySQL / Lv.3 대장균들의 자식의 수 구하기]문제설명문제풀이 👉 ECOLI_DATA테이블이 아래와 같을 때 개체 ID별 자식의 수를 출력하는 문제이므로 1. PARENT_ID를 기준으로 그룹화하여 자식 개체의 개수 세기SELECT PARENT_ID, COUNT(*) AS CHILD_COUNTFROM Eanalytic-catcher.tistory.com 풀이👉 이번에는 ECOLI_DATA테이블이 아래와 같을 때 3세대 대장균의 ID를 출력해야하는 문제이므로 1. 대장균 개체들의 1세대 추적WITH RECURSIVE LEVEL AS( SELECT ID, PARENT_ID, 1 AS LEVEL .. 2025. 3. 26.
[프로그래머스 / MySQL / Lv.4 입양 시각 구하기(2)] 문제설명문제설명문제풀이✅ 0시부터 23시까지 모든 시간이 포함되야하므로 입양된 데이터가 없는 시간대의 건수는 0으로 표시!! 1. 0~23까지의 숫자를 생성하는 재귀 CTEWITH RECURSIVE HOURS AS ( SELECT 0 AS HOUR UNION ALL SELECT HOUR + 1 FROM HOURS WHERE HOUR 👉 UNION ALL을 이용해 0부터 23까지 증가하도록 함 2. 위에서 만든 HOURS테이블과 ANIMAL_OUTS테이블을 LEFTJOINWITH RECURSIVE HOURS AS ( SELECT 0 AS HOUR UNION ALL SELECT HOUR + 1 FROM HOURS WHERE HOUR 👉 IFNULL(COUNT(A.DATET.. 2025. 3. 25.
[프로그래머스 / MySQL / Lv.2 업그레이드 된 아이템 구하기] 문제설명문제풀이✅ 아이템의 희귀도가 'RARE'인 아이템들의 모든 다음 업그레이드 아이템을 구해야함ITEM_INFO 테이블에서 아이템의 희귀도가 'RARE'인 아이템 = 'ITEM_A', 'ITEM_B', 'ITEM_D', 'ITEM_E'로ITEM_A ➡ ITEM_B ➡ ITEM_D              ↘                ↘                  ITEM_C        ITEM_E 👉 다음 업그레이드 아이템들인 'ITEM_B',  'ITEM_C' , 'ITEM_D',  'ITEM_E'의 정보들이 출력되야함 1. ITEM_INFO테이블과 ITEM_TREE테이블을 JOIN( ITEM_ID기준) SELECT *FROM ITEM_INFO IJOIN ITEM_TREE TON I.ITEM.. 2025. 3. 24.
[프로그래머스 / MySQL / Lv.4 오프라인/온라인 판매 데이터 통합하기] 문제설명문제풀이SELECT DATE_FORMAT(SALES_DATE, '%Y-%m-%d') AS SALES_DATE, PRODUCT_ID, USER_ID, SALES_AMOUNT FROM ONLINE_SALEWHERE DATE_FORMAT(SALES_DATE, '%Y-%m') = '2022-03'UNION ALLSELECT DATE_FORMAT(SALES_DATE, '%Y-%m-%d') AS SALES_DATE, PRODUCT_ID, NULL AS USER_ID, SALES_AMOUNT FROM OFFLINE_SALE WHERE DATE_FORMAT(SALES_DATE, '%Y-%m') = '2022-03'ORDER BY SALE.. 2025. 3. 21.
[프로그래머스 / MySQL / Lv.2 분기별 분화된 대장균의 개체 수 구하기] 문제설명문제풀이SELECT (CASE WHEN (MONTH(DIFFERENTIATION_DATE) BETWEEN 01 AND 03) THEN '1Q' WHEN (MONTH(DIFFERENTIATION_DATE) BETWEEN 04 AND 06) THEN '2Q' WHEN (MONTH(DIFFERENTIATION_DATE) BETWEEN 07 AND 09) THEN '3Q' ELSE '4Q'END) AS 'QUARTER', COUNT(ID) AS ECOLI_COUNTFROM ECOLI_DATAGROUP BY QUARTERORDER BY QUARTER👉 각 분기별로 구하기 위해 MONTH(DIFFERENTIATION_DATE)로 '월'을 추출 후 CASE문을 이용해서 만들어줌실행결과 2025. 3. 20.
[프로그래머스 / MySQL / Lv.3 물고기 종류 별 대어 찾기] 문제설명문제👇 이전에는 물고기 종류 별 물고기의 이름과 잡은 수를 구하는 문제를 풀었는데  [프로그래머스 / MySQL / Lv.2 물고기 종류 별 잡은 수 구하기]문제설명문제방법1(서브쿼리)1. FISH_TYPE별 물고기를 잡은 수 구하기 SELECT FISH_TYPE, COUNT(*) AS FISH_COUNT FROM FISH_INFOGROUP BY FISH_TYPE📌 COUNT(*): 전체 행 개수 vs COUNT(컬럼명):해당 컬럼 데이터 개수(NULL제analytic-catcher.tistory.com이번에는 물고기 종류 별로 가장 큰 물고기의 의 ID, 이름, 길이를 구해야함풀이1. FISH_TYPE별로 가장 큰 물고기 찾기SELECT FISH_TYPE, MAX(LENGTH) AS MAX_.. 2025. 3. 19.
[프로그래머스 / MySQL / Lv.4 그룹별 조건에 맞는 식당 목록 출력하기] 문제설명문제방법1(LIMIT)1. JOIN(MEMBER_ID기준)SELECT M.MEMBER_NAME, R.REVIEW_TEXT, DATE_FORMAT(R.REVIEW_DATE, '%Y-%m-%d') AS REVIEW_DATEFROM MEMBER_PROFILE MJOIN REST_REVIEW R ON M.MEMBER_ID = R.MEMBER_ID👉 DATE_FORMAT(R.REVIEW_DATE, '%Y-%m-%d') : 날짜 포맷을 맞추기 위해서 사용 2. 가장 많은 리뷰를 작성한 회원의 MEMBER_ID를 찾고 REVIEW_DATE, REVIEW_TEXT 오름차순 정렬SELECT M.MEMBER_NAME, R.REVIEW_TEXT, DATE_FORMAT(R.REVIEW_DATE, '%Y-%m-%d').. 2025. 3. 18.
[프로그래머스 / MySQL / Lv.3 업그레이드 할 수 없는 아이템 구하기] 문제설명문제풀이ITEM_A ➡ ITEM_B ➡ ITEM_D              ↘                ↘                  ITEM_C        ITEM_E✅ ITEM_TREE테이블을 보면 더 이상 업그레이드 할 수 없는 아이템은  ITEM_C, ITEM_D,  ITEM_E  1. ITEM_INFO 테이블기준으로 ITEM_TREE 테이블과 LEFT JOINSELECT *FROM ITEM_INFO ILEFT JOIN ITEM_TREE TON I.ITEM_ID = T.PARENT_ITEM_ID👉 해당 아이템이 다른 아이템의 부모인지 체크!! 2. 부모로 등장한 적이 없는 아이템만 필터링 ( = 다른 아이템으로 업그레이드되지 않는 아이템)SELECT *FROM ITEM_INFO I.. 2025. 3. 17.
[프로그래머스 / MySQL / Lv.3 대장균들의 자식의 수 구하기] 문제설명문제풀이 👉 ECOLI_DATA테이블이 아래와 같을 때 개체 ID별 자식의 수를 출력하는 문제이므로 1. PARENT_ID를 기준으로 그룹화하여 자식 개체의 개수 세기SELECT PARENT_ID, COUNT(*) AS CHILD_COUNTFROM ECOLI_DATAGROUP BY PARENT_ID 2.  ECOLI_DATA 테이블과 위에서 만든 서브쿼리를 LEFT JOIN함SELECT A.ID, B.CHILD_COUNTFROM ECOLI_DATA ALEFT JOIN (SELECT PARENT_ID, COUNT(*) AS CHILD_COUNT FROM ECOLI_DATA GROUP BY PARENT_ID) BON A.ID = B.PARENT_IDORDER BY A.ID;?.. 2025. 3. 14.