비전공자도 단번에 통과하는 프로그래머스 SQL 간단하게 해결하는 방법 초정

비전공자도 단번에 통과하는 프로그래머스 SQL 간단하게 해결하는 방법 초정밀 가이드

배너2 당겨주세요!

많은 예비 개발자들이 코딩 테스트를 준비하며 알고리즘에 집중하지만, 정작 실무와 직결되는 SQL에서 고전하곤 합니다. 프로그래머스 SQL 고득점 Kit를 효율적으로 정복하고, 복잡한 쿼리도 단순하게 구조화하여 해결하는 실무 지향적 전략을 공유합니다.

목차

  1. SQL 코딩 테스트의 핵심 전략
  2. 프로그래머스 SQL 간단하게 해결하는 방법: 문법 편
  3. 프로그래머스 SQL 간단하게 해결하는 방법: 구조 편
  4. 빈출 유형별 문제 해결 공식
  5. 실수 방지를 위한 최종 점검 리스트

SQL 코딩 테스트의 핵심 전략

프로그래머스 환경에서 SQL 문제를 풀 때는 단순히 문법을 암기하는 것보다 데이터의 흐름을 파악하는 것이 우선입니다.

  • 문제의 요구사항을 데이터 필드로 치환
  • 문제에서 “가장 많이 팔린”은 COUNT 또는 SUM을 의미합니다.
  • “최근에 들어온”은 ORDER BYDESC를 활용한 정렬을 뜻합니다.
  • “이름이 없는”은 IS NULL 조건을 찾아내라는 신호입니다.
  • 출력 결과의 형식을 먼저 확인
  • SELECT 절에 들어가야 할 컬럼명을 먼저 작성하고 시작합니다.
  • 결과값의 소수점 처리나 날짜 포맷팅 요구사항이 있는지 체크합니다.
  • 단계별 쿼리 작성
  • 한 번에 완벽한 쿼리를 짜려 하지 말고, 전체 데이터 조회부터 시작해 조건(WHERE), 그룹화(GROUP BY), 정렬(ORDER BY) 순으로 살을 붙여 나갑니다.

프로그래머스 SQL 간단하게 해결하는 방법: 문법 편

자주 쓰이는 핵심 문법 몇 가지만 제대로 익혀도 프로그래머스 문제의 80% 이상을 해결할 수 있습니다.

  • SELECT & FROM: 데이터의 시작
  • DISTINCT: 중복된 값을 제거하고 고유한 값만 추출할 때 사용합니다.
  • AS: 컬럼명이나 테이블명에 별칭을 부여하여 가독성을 높입니다.
  • WHERE: 강력한 필터링
  • LIKE '%문자열%': 특정 문자가 포함된 데이터를 찾을 때 필수적입니다.
  • IN (값1, 값2): 여러 조건 중 하나라도 일치하는 데이터를 찾을 때 OR보다 간결합니다.
  • BETWEEN A AND B: 숫자나 날짜의 범위를 지정할 때 효율적입니다.
  • GROUP BY & HAVING: 집계의 핵심
  • GROUP BY: 특정 컬럼을 기준으로 데이터를 그룹화합니다.
  • HAVING: 그룹화된 결과에 조건을 걸 때 사용하며, WHERE와 혼동하지 않도록 주의합니다.
  • JOIN: 테이블의 결합
  • INNER JOIN: 두 테이블에 모두 존재하는 데이터만 결합합니다.
  • LEFT JOIN: 왼쪽 테이블을 기준으로 오른쪽 테이블을 붙이며, 매칭되지 않는 경우 NULL로 표시됩니다.

프로그래머스 SQL 간단하게 해결하는 방법: 구조 편

복잡한 문제는 쿼리를 구조적으로 분리하여 생각하면 간단해집니다.

  • 서브쿼리(Subquery)의 활용
  • SELECT 절 서브쿼리: 계산된 값을 하나의 컬럼처럼 사용하고 싶을 때 활용합니다.
  • WHERE 절 서브쿼리: 특정 조건을 만족하는 대상 리스트를 먼저 뽑아낼 때 유용합니다.
  • FROM 절 서브쿼리(Inline View): 임시 테이블처럼 사용하여 복잡한 집계 후 다시 필터링할 때 씁니다.
  • WITH 구문(CTE) 활용하기
  • 서브쿼리가 너무 중첩되어 복잡할 경우 WITH 절을 사용하여 가독성을 극대화합니다.
  • 임시 결과 집합을 정의하고 메인 쿼리에서 이를 참조하는 방식으로 논리 구조를 단순화합니다.
  • 조건문 CASE WHEN
  • 특정 조건에 따라 값을 변경하여 출력해야 할 때 사용합니다.
  • END로 반드시 마무리해야 하며, ELSE 처리를 통해 예외 상황을 관리합니다.

빈출 유형별 문제 해결 공식

프로그래머스 SQL 고득점 Kit에 등장하는 주요 유형별 공략법입니다.

  • NULL 처리 문제
  • IFNULL(컬럼명, '대체값'): MySQL 기준으로 NULL 값을 특정 문구로 바꿀 때 가장 간편합니다.
  • COALESCE: 여러 컬럼 중 NULL이 아닌 첫 번째 값을 찾을 때 유용합니다.
  • 날짜 데이터 다루기
  • DATE_FORMAT(날짜, '%Y-%m-%d'): 날짜 형식을 지정된 포맷으로 변경합니다.
  • YEAR(), MONTH(), DAY(): 날짜에서 특정 부분만 추출하여 비교할 때 사용합니다.
  • DATEDIFF(): 두 날짜 사이의 차이를 계산할 때 활용합니다.
  • 상위 N개 출력
  • LIMIT N: 가장 상단의 데이터 N개만 추출합니다.
  • ORDER BY와 조합하여 최댓값이나 최솟값을 가진 행을 찾을 때 주로 쓰입니다.
  • 문자열 조작
  • CONCAT(): 여러 컬럼의 문자열을 하나로 합칩니다.
  • SUBSTRING(): 문자열의 특정 부분만 잘라내어 비교하거나 출력합니다.

실수 방지를 위한 최종 점검 리스트

쿼리를 제출하기 전 다음 항목들을 체크하면 오답률을 획기적으로 낮출 수 있습니다.

  • 대소문자 및 오타 확인
  • 예약어(SELECT, FROM 등)는 관습적으로 대문자로 써서 가독성을 높였는지 확인합니다.
  • 컬럼명 오타는 없는지, 쉼표(,)를 빠뜨리지 않았는지 점검합니다.
  • 정렬 조건 우선순위
  • 문제에서 정렬 기준이 여러 개 제시된 경우, ORDER BY 절에 순서대로 나열했는지 확인합니다.
  • 오름차순(ASC, 기본값)과 내림차순(DESC)이 요구사항과 맞는지 체크합니다.
  • 그룹화 기준 컬럼
  • GROUP BY를 사용할 때 SELECT 절에 있는 집계 함수 이외의 모든 컬럼이 GROUP BY 절에 포함되었는지 확인합니다.
  • 중복 제거 여부
  • 문제에서 ‘중복을 제외하고’라는 표현이 있다면 반드시 DISTINCT를 사용했는지 검토합니다.
  • 데이터 타입 변환
  • 숫자 형태의 문자열을 비교하거나, 날짜 형식의 문자열을 다룰 때 적절한 형변환이 이루어졌는지 확인합니다.

SQL은 알고리즘에 비해 정형화된 틀이 존재하므로, 위에서 언급한 구조적 접근법과 핵심 문법만 숙지한다면 누구나 프로그래머스의 모든 문제를 빠르고 정확하게 해결할 수 있습니다. 반복적인 연습을 통해 쿼리 작성의 흐름을 몸에 익히는 것이 무엇보다 중요합니다.

댓글 남기기

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.