교육&자기계발

SQL 공부 순서: SELECT → JOIN → 윈도우 함수 체계화

TaylorSong 2025. 12. 23. 08:00

SQL 공부 순서: SELECT → JOIN → 윈도우 함수 체계화

데이터 분석이나 백엔드 개발을 배우기 시작하면 누구나 한 번쯤 부딪히는 질문이 있습니다. “SQL은 도대체 어떤 순서로 공부해야 할까?” 책이나 강의를 따라가다 보면 SELECT, JOIN, GROUP BY, 그리고 윈도우 함수까지 한꺼번에 등장하죠. 하지만 체계적인 순서를 알면, SQL은 훨씬 쉽고 논리적으로 다가옵니다.

SQL 공부 순서: SELECT → JOIN → 윈도우 함수 체계화
SQL 공부 순서: SELECT → JOIN → 윈도우 함수 체계화

저 역시 처음엔 SQL 문법이 뒤섞여 혼란스러웠습니다. 하지만 SELECT → JOIN → GROUP BY → 윈도우 함수 순서로 단계를 밟으며 연습했을 때 비로소 SQL이 “읽히는 언어”로 느껴졌죠. 이 글에서는 초보자에게 가장 효율적인 SQL 학습 흐름을 실제 예제 중심으로 정리했습니다.

데이터의 시작: SELECT와 FROM

SQL은 데이터를 ‘조회’하는 언어입니다. 그 출발점은 바로 SELECTFROM입니다. SELECT는 “무엇을 볼 것인지”를, FROM은 “어디서 가져올 것인지”를 지정합니다. 즉, 데이터베이스에 있는 테이블에서 필요한 열(column)만 선택하는 단계입니다.

SELECT name, age, city
FROM users;

이 단계를 확실히 이해하면, 나머지 SQL 문법은 모두 “SELECT를 확장하는 과정”으로 이해할 수 있습니다. 즉, SQL의 모든 문장은 결국 “SELECT로 데이터를 어떻게 표현할 것인가”로 귀결됩니다.

데이터를 연결하는 법: JOIN의 개념

데이터 분석의 현실은 하나의 테이블로 끝나지 않습니다. 고객 정보와 주문 내역, 상품 정보가 각각 다른 테이블에 저장되어 있죠. 이들을 하나로 연결하는 기능이 바로 JOIN입니다. JOIN은 공통 열(예: user_id)을 기준으로 여러 테이블을 병합합니다.

JOIN 종류 설명 예시
INNER JOIN 두 테이블 모두에 존재하는 데이터만 결합 SELECT * FROM A INNER JOIN B ON A.id = B.id;
LEFT JOIN 왼쪽 테이블의 모든 데이터 + 오른쪽 일치 데이터 SELECT * FROM A LEFT JOIN B ON A.id = B.id;
FULL OUTER JOIN 양쪽 테이블의 모든 데이터 포함 SELECT * FROM A FULL OUTER JOIN B ON A.id = B.id;

데이터 요약: GROUP BY와 HAVING

데이터를 “묶어서” 통계적으로 요약하고 싶을 때는 GROUP BY를 사용합니다. 여기에 SUM(), AVG(), COUNT() 같은 집계 함수를 함께 쓰면 각 그룹의 요약 정보를 얻을 수 있습니다. 특정 조건의 그룹만 보고 싶을 때는 HAVING을 사용하죠.

  • SELECT region, SUM(sales) FROM orders GROUP BY region;
  • SELECT category, AVG(price) FROM products GROUP BY category HAVING AVG(price) > 100;
  • GROUP BY → HAVING → ORDER BY 순서로 실행된다는 점을 기억하세요.

한 단계 위의 분석: 윈도우 함수

윈도우 함수(Window Function)는 SQL을 단순한 집계 언어에서 분석 언어로 끌어올린 기능입니다. 기존 GROUP BY가 “데이터를 묶어 요약”하는 것이라면, 윈도우 함수는 “묶지 않고 계산 결과를 각 행에 표시”합니다. 이를 통해 누적 합계, 순위, 이동 평균 등을 간단히 계산할 수 있습니다.

SELECT name, sales,
       RANK() OVER (ORDER BY sales DESC) AS rank,
       SUM(sales) OVER (ORDER BY sales DESC ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS cumulative
FROM employees;

위 예시는 각 직원의 매출 순위를 계산하고, 누적 매출 합계를 함께 보여줍니다. 이처럼 윈도우 함수는 데이터의 흐름과 순서를 다루는 데 탁월하며, 데이터 분석 SQL의 핵심 무기로 불립니다.

실전 연습 루틴과 학습 팁

SQL을 배우는 가장 좋은 방법은 “손으로 직접 쿼리를 써보는 것”입니다. 아래는 단계별 SQL 학습 루틴 예시입니다. 이 흐름대로 학습하면 이론보다는 실습 중심으로 자연스럽게 SQL 사고력을 키울 수 있습니다.

단계 학습 내용 예시 쿼리
1단계 SELECT, WHERE, ORDER BY SELECT name FROM users WHERE age > 30;
2단계 JOIN으로 데이터 결합 SELECT * FROM users u JOIN orders o ON u.id = o.user_id;
3단계 GROUP BY와 HAVING으로 통계 요약 SELECT city, AVG(income) FROM users GROUP BY city;
4단계 윈도우 함수로 순위/누적 계산 SELECT name, RANK() OVER (ORDER BY score DESC) FROM students;

SQL 이후의 확장: 분석과 자동화

SQL은 데이터 분석의 기초이자 출발점입니다. 하지만 실제 업무에서는 판다스(Pandas), BigQuery, Airflow 같은 도구로 연결되며 데이터 파이프라인과 자동화로 발전하게 됩니다. 즉, SQL은 단순한 질의 언어가 아니라 “데이터 사고의 문법”이 되는 셈입니다.

  • SQL → 판다스 → BigQuery 순으로 학습하면 분석 실무에 강해집니다.
  • 실무에서는 SQL 쿼리를 자동화 스크립트로 변환하는 경험이 중요합니다.
  • 윈도우 함수와 CTE(Common Table Expression)는 고급 SQL의 핵심입니다.

자주 묻는 질문 (FAQ)

Q SQL을 처음 배우면 가장 먼저 익혀야 할 문법은 무엇인가요?

가장 먼저 익혀야 할 것은 SELECT와 FROM입니다. 데이터 조회의 기본 구조를 이해해야 이후 JOIN, GROUP BY, 윈도우 함수로 자연스럽게 확장할 수 있습니다.

Q JOIN이 어렵게 느껴집니다. 쉽게 이해할 방법이 있을까요?

JOIN은 단순히 ‘두 개의 표를 합친다’는 개념입니다. 공통 키(예: user_id)를 기준으로 두 테이블을 연결한다고 생각하면 됩니다. 엑셀의 VLOOKUP과 비슷하다고 보면 훨씬 쉽게 이해됩니다.

Q GROUP BY와 윈도우 함수의 차이는 무엇인가요?

GROUP BY는 데이터를 ‘묶어서’ 결과를 줄이는 반면, 윈도우 함수는 데이터를 묶지 않고 각 행에 계산 결과를 추가합니다. 즉, 행을 유지한 채 집계 결과를 함께 볼 수 있는 것이 윈도우 함수의 장점입니다.

Q SQL을 배우는 데 얼마나 걸릴까요?

기초 문법은 1~2주면 충분히 익힐 수 있습니다. 다만 실무 수준으로 익히려면 최소 2~3개월 동안 실제 데이터를 다뤄보는 연습이 필요합니다.

Q SQL을 독학할 때 추천하는 학습 순서는 어떻게 되나요?

SELECT → WHERE → ORDER BY → JOIN → GROUP BY → HAVING → 윈도우 함수 순으로 학습하세요. 이 순서대로 배우면 SQL의 흐름을 자연스럽게 체득할 수 있습니다.

Q SQL을 배운 후 다음 단계는 무엇인가요?

SQL을 다루게 되면 데이터 분석, 파이썬(Pandas), BI 도구(Tableau, Power BI), 데이터 엔지니어링으로 확장할 수 있습니다. SQL은 이 모든 기술의 공통 언어이자 기반입니다.

마무리하며

SQL은 단순한 데이터 조회 언어가 아니라, 논리적 사고를 기르는 언어입니다. SELECT로 데이터를 읽고, JOIN으로 연결하며, GROUP BY로 요약하고, 윈도우 함수로 패턴을 파악하는 과정은 데이터의 흐름을 이해하는 사고 훈련이 됩니다. 처음엔 문법이 복잡하게 느껴지더라도, “데이터가 어떻게 흘러가는가”를 중심에 두면 SQL은 자연스럽게 익혀집니다.

SELECT → JOIN → 윈도우 함수, 이 세 단계를 체계적으로 익히면 데이터 분석, 백엔드 개발, 비즈니스 인텔리전스 어디서든 활용할 수 있는 ‘데이터 언어’를 얻게 됩니다. SQL을 배우는 여정은 코드를 익히는 과정이 아니라, 데이터를 이해하는 언어를 배우는 여정입니다.