sql8 [SQL 리팩토링] IF 대신 COALESCE 사용하기 1. 문제 소개FISH_INFO 테이블에서평균 길이가 33cm 이상인 물고기들을 종류별로 분류하여잡은 수 (FISH_COUNT)최대 길이 (MAX_LENGTH)물고기 종류 (FISH_TYPE)를 출력하는 문제입니다.단,👉 길이가 10cm 이하이거나 NULL인 경우 10cm로 처리해야 합니다.2. 문제 접근 방법처음에는 NULL 값을 처리하기 위해조건문을 사용하는 방식으로 접근했습니다.특히 MySQL에서 자주 사용하는IF 함수를 활용해 평균값을 계산했습니다.3. 처음 작성한 코드SELECT COUNT(ID) AS FISH_COUNT, MAX(LENGTH) AS MAX_LENGTH, FISH_TYPEFROM FISH_INFOGROUP BY FISH_TYPEHAVING AVG(IF(LENG.. 2026. 3. 20. [코딩테스트 오답 노트] ORDER BY 집계 컬럼 착각 (SUBWAY_DISTANCE 노선별 거리) 1. 문제 정보문제 이름: 노선별 평균 역 사이 거리 조회하기언어: SQL난이도: LV.2소요 시간: 약 10분 노선별 평균 역 사이 거리 조회하기2. 문제를 어떻게 해석했는가? (사고 시작점)문제를 한 문장으로 요약하면?노선별로 총 역 사이 거리와 평균 역 사이 거리를 계산하고반올림 후 km 단위를 붙여 정렬하는 문제이해한 핵심 조건노선별 집계총 거리 = SUM(D_BETWEEN_DIST)평균 거리 = AVG(D_BETWEEN_DIST)km 단위 붙이기총 거리 기준 내림차순 정렬이 문제는 어떤 사고를 요구하는가?집합 사고 (조건 정의, 그룹화, 필터링)👉 여기서 이미 오해가 있었는가?반올림 자릿수를 잘못 해석했다.정렬 기준을 집계 결과가 아닌 원본 컬럼으로 정렬했다.3. 내가 처음 작성한 코드 / 쿼.. 2026. 3. 20. [코딩테스트 오답 노트] 비트 조건을 나열로 풀려다 실패 (대장균 형질 문제) 1. 문제 정보문제 이름: 특정 형질을 가지는 대장균 찾기언어: SQL난이도: LEVEL 1소요 시간: 30분첫 시도 결과: 오답 (논리 오류)2. 문제를 어떻게 해석했는가? (사고 시작점)문제를 한 문장으로 요약하면?2번 형질이 없고, 1번 또는 3번 형질이 있는 개체 수 구하기이해한 핵심 조건2번 형질 ❌ 없음1번 또는 3번 형질 ⭕ 있음(1번 + 3번 둘 다 있는 것도 포함)이 문제는 어떤 사고를 요구하는가?집합 사고 (조건 정의, 그룹화, 필터링)👉 여기서 이미 오해가 있었는가?"조건을 직접 나열해야 한다"라고 착각함3. 내가 처음 작성한 코드 / 쿼리SELECT COUNT(GENOTYPE) AS COUNT FROM ( SELECT CONV(GENOTYPE,10, 2) AS GENOTYPE.. 2026. 3. 20. SQL Window 함수 완전 정리 (PARTITION BY, RANK, LAG) | 코딩테스트 필수 문법 window 함수란Window 함수는 “행을 합치지 않고” 각 행에 대해 계산 결과를 붙여주는 함수입니다. 일반적인 집계 함수는 결과가 줄어듭니다.예시SELECT country, SUM(profit)FROM salesGROUP BY countrycountrysumUSA4575India1350👉 행이 줄어듭니다하지만 Window 함수는SELECT country, profit, SUM(profit) OVER(PARTITION BY country) AS country_profitFROM salescountryprofitcountry_profitUSA15004575USA754575India751350👉 원본 데이터는 그대로 유지하면서 계산 결과를 추가됩니다Window 함수 기본 문법SELE.. 2026. 3. 8. SQL CASE WHEN 완벽 정리: 사용법, 예제, 실행순서까지 (초보자 필수 문법) CASE WHEN이란?예를 들어 이런 테이블이 있다고 가정해봅시다.IDSCORE195272358이걸 아래처럼 바꾸고 싶다면?IDGRADE1A2B3C이럴 때 사용하는 것이 바로 CASE WHEN입니다.👉 CASE WHEN의 결과는 기존 테이블을 변경하는 것이 아니라, 조회 결과에 새로운 컬럼을 만들어 값을 표시합니다.SELECT CASE WHEN score >= 90 THEN 'A' WHEN score >= 70 THEN 'B' END AS gradeFROM students;CASE WHEN은 Python의 if-elif-else 구조와 동일하게 동작합니다.# Pythonif score >= 90: grade = 'A'elif score >= 70: grad.. 2026. 2. 28. SQL IN vs OR 차이점 완벽 정리 (초보자도 이해하는 사용법과 실무 기준) SQL을 사용하다 보면 WHERE 절에서 조건을 여러 개 지정해야 하는 경우가 자주 있습니다.대표적으로 사용하는 방법이 바로 IN과 OR입니다.예를 들어 Python을 사용하는 개발자를 찾는 경우입니다.SELECT *FROM developer_infosWHERE skill_1 = 'Python' OR skill_2 = 'Python' OR skill_3 = 'Python';위 코드는 아래처럼도 작성할 수 있습니다.SELECT *FROM developer_infosWHERE 'Python' IN (skill_1, skill_2, skill_3);두 쿼리는 같은 결과를 반환합니다.즉, skill_1, skill_2, skill_3 중 하나라도 Python이면 조회됩니다.그렇다면 무엇이 다르고, 무엇이.. 2026. 2. 26. 이전 1 2 다음