Data Science/SQL86 [SQL/오답] 홀수 ID 판별하는 3가지 방법: %, MOD, 그리고 비트 연산자 (LeetCode620 Easy) [리트코드] Easy|620. Not Boring Movies; MOD, 비트연산자&, 나머지연산자%https://leetcode.com/problems/not-boring-movies/description/1. Problem조건에 맞는 영화 목록을 추출해야 한다.조건 1: ID가 홀수(odd-numbered)일 것.조건 2: 설명(description)이 'boring'이 아닐 것.정렬: 평점(rating)이 높은 순서대로 내림차순 정렬.2. Solution: 세 가지 색깔의 홀수 판별법① 나머지 연산자 (%) 활용 가장 직관적이며 많은 프로그래밍 언어에서 공통적으로 쓰이는 방식입니다.② MOD 함수 활용 표준 SQL 함수를 사용하여 가독성을 높인 방식입니다.③ 비트 연산자 (&) 활용 (심화) 숫자를.. 2026. 2. 6. [SQL/오답] 집계 함수의 특성을 이용한 NULL 처리: 가장 큰 고유 숫자 찾기 (LeetCode 619) [리트코드] |619. Biggest Single Number; Inline Viewhttps://leetcode.com/problems/biggest-single-number/description/ 1. Problem핵심 과제: 조건에 맞는 숫자가 하나도 없을 경우, 빈 테이블이 아닌 **null**이 담긴 한 행을 출력해야 한다.2. Solution: 인라인 뷰(Inline View)와 집계 함수의 결합3. Takeaway: 왜 이 구조가 객관적으로 우수한가?MAX() 함수의 빈 테이블 처리:일반적인 SELECT num ... WHERE ... 구문은 조건에 맞는 데이터가 없으면 '0 rows selected'를 반환하며 아예 행이 나오지 않는다.하지만 집계 함수(MAX, SUM, AVG 등)를 단독.. 2026. 2. 6. [SQL/오답] 여러 컬럼에 흩어진 데이터 통합하기: UNION ALL과 정렬 기반의 최상위 추출 (LeetCode602 Medium) 602. Friend Requests II: Who Has the Most Friends; UNION ALL, LIMIT1. Problem누가 가장 많은 친구를 보유하고 있는지, 그리고 그 친구 수는 몇 명인지 찾아야 한다.핵심 난관: 친구 관계는 requester_id(신청자)와 accepter_id(수락자) 두 컬럼에 나뉘어 저장되어 있다. 한 사람의 총 친구 수를 구하려면 이 두 컬럼에 등장하는 본인의 ID를 모두 합산해야 한다.2. Solution: 데이터 수직 통합 후 빈도 계산UNION ALL을 사용해 두 컬럼의 ID를 하나의 열로 합친 뒤, 그룹화하여 개수를 세고 가장 높은 값을 추출한다.3. Takeaway: 쿼리의 가독성과 효율성 (객관적 분석)UNION vs UNION ALL:UNION.. 2026. 2. 6. [SQL/고급] 3일 이상 연속된 데이터 찾기: JOIN의 늪을 탈출하는 ROW_NUMBER()의 마법 (LeetCode601 Hard) 601. Human Traffic of Stadium; WITH, ROW_NUMBER, GROUP BYhttps://leetcode.com/problems/human-traffic-of-stadium/description/1. Problem관객 수가 100명 이상인 날이 3일 이상 연속되는 모든 기록을 찾아야 한다.핵심 과제:관객 수 100명 미만인 날은 건너뛰어야 함.연속된 날이 2일인 구간은 버리고, 3일 이상인 구간만 모든 행을 출력해야 함.날짜가 비어 있어도 id가 연속되면 연속된 것으로 간주함.2. Solution: '차이값의 일정함'을 이용한 그룹화연속된 두 수열을 서로 빼면, 연속되는 구간 동안은 그 차이값이 항상 일정하다는 수학적 원리를 이용한다.3. Takeaway: 왜 윈도우 함수가 J.. 2026. 2. 6. [SQL/오답] 가장 많은 주문을 한 고객 찾기: HAVING의 한계와 ORDER BY + LIMIT의 효율성 (LeetCode586 Easy) 586. Customer Placing the Largest Number of Orders; ORDER BY, LIMIT1. Problem주문 기록이 담긴 테이블에서 가장 많은 주문을 기록한 고객의 번호를 찾아야 한다.핵심 과제: 고객별로 주문 건수를 집계하고, 그중 최댓값을 가진 고객 한 명만 정확히 골라내는 것이다. (문제 조건상 우승자는 항상 1명이다.)2. Solution: 그룹화와 정렬을 이용한 1위 추출GROUP BY로 고객별 건수를 센 뒤, 내림차순 정렬과 LIMIT을 조합하여 최상위 데이터를 가져온다.3. Takeaway: 왜 HAVING MAX(COUNT(...))는 작동하지 않는가? (객관적 분석)집계 함수의 중첩 불가능 (유진 님의 오답 분석):오답: HAVING MAX(COUNT(o.. 2026. 2. 6. [SQL/오답] 부하 직원이 5명 이상인 매니저 찾기: 셀프 조인과 서브쿼리의 활용 (LeetCode570 Medium) 570. Managers with at Least 5 Direct Reports; INNER JOIN, SUBQUERY1. Problem한 테이블 안에 직원과 매니저 정보가 섞여 있는 구조에서, 직속 부하가 5명 이상인 매니저의 이름을 찾아야 한다.핵심 과제: managerId 컬럼을 통해 누가 누구를 관리하는지 파악하고, 특정 id가 managerId 열에 5번 이상 등장하는지 체크하여 그 id에 해당하는 name을 매칭하는 것이다.2. Solution: 두 가지 객관적 접근법① 서브쿼리(IN)를 이용한 방식 (직관적) 먼저 조건을 만족하는 'ID 리스트'를 뽑고, 그 리스트에 포함된 이름을 메인 쿼리에서 가져온다.② INNER JOIN을 이용한 방식 (데이터 정합성) 매니저 테이블(m)과 부하 직원 .. 2026. 2. 6. 이전 1 ··· 9 10 11 12 13 14 15 다음