Data Science/SQL86 [SQL/오답] DATE_FORMAT, INNER JOIN과 필터링: 게시글 vs 댓글 작성일 구분하기 (프로그래머스 Lv1) 1. Problem2022년 10월에 작성된 게시글을 대상으로, 해당 게시글에 달린 댓글 정보를 결합하여 출력해야 한다. 데이터 포맷(YYYY-MM-DD)을 엄격히 준수해야 하며, 댓글이 없는 게시글은 결과에서 제외해야 하는 '데이터 정합성'이 핵심인 문제이다.2. Solution: 교집합 추출과 날짜 포맷팅게시글과 댓글이 모두 존재하는 데이터만 가져오기 위해 INNER JOIN을 사용하고, 문제의 조건인 '게시글 작성일'을 기준으로 필터링한다.3. Takeaway: 오답을 통해 배운 객관적 설계 원칙JOIN 전략의 수정 (LEFT vs INNER):LEFT JOIN을 쓰면 댓글이 없는 게시글까지 모두 불러와 결과값이 NULL로 채워진다.이 문제처럼 "댓글 정보"를 조회하는 것이 목적일 때는 두 테이블에.. 2026. 2. 14. [SQL/오답] 트리 구조: 부모 노드의 조건으로 자식 노드 데이터 추출하기; 중첩 서브쿼리 (프로그래머스 Lv2) 1. Problem아이템 간의 업그레이드 관계가 ITEM_TREE에 정의되어 있을 때, 희귀도가 'RARE'인 아이템으로부터 업그레이드 된(다음 단계인) 모든 아이템의 정보를 출력해야 한다. 즉, 'RARE' 아이템을 부모(PARENT)로 둔 자식(CHILD) 노드들을 찾는 것이 핵심이다.2. Solution: 중첩 서브쿼리와 조인의 결합서브쿼리를 통해 'RARE' 등급 부모를 둔 자식 ID 리스트를 먼저 확보하고, 메인 쿼리에서 해당 ID들의 상세 정보를 조회한다.3. Takeaway: 트리 구조 분석과 SQL 모델링노드 관계의 해석: 트리 구조 문제에서 가장 중요한 것은 **"누가 누구의 부모인가?"**를 파악하는 것이다. 문제에서 요구하는 '업그레이드 된 아이템'은 곧 ITEM_TREE에서 ITEM.. 2026. 2. 14. [SQL/오답] 날짜 그룹화와 특수문자 별칭 (프로그래머스 Lv2) Lv2. 연도 별 평균 미세먼지 농도 조회하기; GROUP BY, AVGhttps://school.programmers.co.kr/learn/courses/30/lessons/2845301. Problem전국의 월별 미세먼지 측정 데이터에서 '수원' 지역의 연도별 평균 농도를 산출해야 한다. 소수점 반올림 조건과 특수문자가 포함된 컬럼명 부여, 그리고 날짜 데이터에서 연도 정보를 추출하는 복합적인 SQL 스킬이 요구된다.2. Solution: 집계 함수와 포맷팅의 조화YEAR() 함수로 연도를 추출하고, AVG와 ROUND를 중첩하여 요구사항에 맞는 수치를 계산한다.3. Takeaway: 실전에서 점수를 깎는 3대 함정특수문자 별칭(Alias)의 엄격함: SQL에서 마침표(.)는 보통 테이블.컬럼 형식을.. 2026. 2. 14. [SQL/오답] '동시 구매' 조건: COUNT(*)와 COUNT(DISTINCT) 차이 (프로그래머스 Lv4) [프로그래머스]Lv4. 우유와 요거트가 담긴 장바구니https://school.programmers.co.kr/learn/courses/30/lessons/622841. Problem하나의 장바구니(CART_ID) 안에 'Milk'와 'Yogurt'가 모두 포함된 사례를 찾아야 한다. 단순히 두 품목 중 하나라도 들어있는 장바구니를 찾는 것이 아니라, 두 종류의 아이템이 '동시에' 존재하는 집합을 찾아내는 것이 핵심이다.2. Solution: GROUP BY와 중복 제거 집계WHERE 절로 후보군을 좁힌 뒤, 장바구니별로 묶어 종류(NAME)의 개수를 세어 검증한다.3. Takeaway: 왜 COUNT(*)는 위험한가? (객관적 분석)COUNT(*)의 함정: 만약 장바구니에 '우유만 2개' 담겨 있다면 .. 2026. 2. 14. [SQL/오답] GROUP BY의 한계와 중첩 서브쿼리: 특정 조건을 만족하는 '전체 행' 조회하기 (프로그래머스 Lv3) [프로그래머스]Lv3. 헤비 유저가 소유한 장소; 중첩 서브쿼리https://school.programmers.co.kr/learn/courses/30/lessons/77487 1. Problem공간 대여 플랫폼에서 공간을 2개 이상 등록한 '헤비 유저'를 식별하고, **그들이 등록한 모든 공간의 정보(ID, 이름, 호스트 ID)**를 출력해야 한다. 단순히 헤비 유저의 명단만 뽑는 것이 아니라, 그들에게 속한 '전체 리스트'를 다시 보여줘야 한다는 점이 이 문제의 핵심이다.2. Solution: 서브쿼리를 이용한 필터링먼저 서브쿼리를 통해 헤비 유저의 HOST_ID 목록을 만들고, 메인 쿼리에서 이를 IN 연산자로 필터링하여 해당 호스트의 모든 행을 가져온다.3. Takeaway: 왜 메인 쿼리에 바로.. 2026. 2. 12. [SQL/오답] 문자열 결합(CONCAT)과 서브쿼리를 이용한 조건부 경로 추출 (프로그래머스 Lv3) [프로그래머스] 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기https://school.programmers.co.kr/learn/courses/30/lessons/1646711. Problem전체 게시글 중 조회수가 가장 높은 단 하나의 게시물을 찾아, 그 게시물에 포함된 모든 첨부파일의 전체 경로(FILE_PATH)를 생성해야 한다. 디렉토리 구조와 파일명 규칙(/home/grep/src/게시글ID/파일ID파일명확장자)을 CONCAT 함수로 정밀하게 구현하는 것이 핵심이다.2. Solution: 최댓값 필터링과 문자열 합성서브쿼리로 '전체 1등 조회수'를 구한 뒤, 이를 기준으로 테이블을 필터링하고 필요한 정보를 이어 붙인다.3. Takeaway: 왜 오답이 발생했는가? (객관적 분석)CON.. 2026. 2. 12. 이전 1 ··· 5 6 7 8 9 10 11 ··· 15 다음