1️⃣ 마케팅 · 인사이트

빅쿼리 SQL 기본 원리 및 해석방법. 초보자를 위한 SQL 기본기

백백서 2025. 11. 28. 17:03

데이터를 다루는 모든 환경에서 SQL 기본은 가장 먼저 익혀야 하는 기술로 꼽혀요.

 

특히 2025년 현재 많은 기업이 데이터 기반 의사결정을 강화하면서, SQL 기초를 정확히 이해하는 것이 더 중요해졌습니다. 이 글에서는 SQL 기본 문법을 전체 흐름부터 실제 실행 순서, 실무에서 자주 쓰는 패턴까지 자연스럽게 연결해 설명해 보려고 해요.


정리하자면 SQL을 처음 접하는 분들이 “어떤 절이 어떤 역할을 하고, 왜 그렇게 동작하는지”를 한 번에 이해할 수 있도록 구성했습니다.


1. SQL 기본이란 무엇인가요?

 

SQL 기본(SQL Basics)은 관계형 데이터베이스에서 원하는 데이터를 조회·가공하기 위해 사용하는 언어 구조를 말해요.


쉽게 말해, SQL은 데이터를 가져오고(SELECT), 필요한 조건만 남기고(WHERE), 묶어서(GROUP BY), 정렬하여(ORDER BY), 보여주는(LIMIT) 방식으로 동작합니다.

 

SQL이라는 용어는 Structured Query Language의 약자로, 구조화된 방식으로 데이터를 질의(Query)한다는 의미를 지녀요.
데이터베이스 종류(MySQL, PostgreSQL, BigQuery 등)에 따라 문법이 일부 달라지지만, SQL 기본 구조 자체는 거의 동일하게 유지됩니다.

 

실무에서 SQL 기본을 바로 이해하면 테이블 구조가 달라져도 데이터 조회 방식을 빠르게 적용할 수 있다는 장점이 있습니다.

 


2. SQL 문장은 어떻게 구성되어 있나요?

SQL 기본 구조는 여러 절(clause)이 순서대로 이어진 형태예요.
아래는 가장 많이 사용하는 기본형입니다.

SELECT
  ...             -- 뭐를 보여줄지
FROM
  ...             -- 어디서 가져올지
WHERE
  ...             -- 어떤 조건만 볼지
GROUP BY
  ...             -- 어떻게 묶어서 집계할지
ORDER BY
  ...             -- 어떤 순서로 정렬할지
LIMIT
  ...;            -- 몇 줄만 볼지

 

이 구조는 작성 순서이고, 실제 실행 순서와는 달라요. 이 차이를 이해하면 집계함수와 그룹화가 왜 필요한지 자연스럽게 익힐 수 있습니다. 

 

※ 단, 이건 기본형이고, 전부 다 써야 하는 건 아니에요
(WHERE, GROUP BY, ORDER BY, LIMIT은 필요할 때만)

 


3. SQL은 어떤 순서로 실행될까요?

실제 SQL이 처리되는 내부 순서는 다음과 같아요.

  1. FROM: 어떤 테이블에서 데이터를 가져올지 결정
  2. WHERE: 불필요한 행(row)을 걸러냄
  3. GROUP BY: 남은 행들을 기준값으로 묶음
  4. SELECT: 최종적으로 보고 싶은 데이터를 만듦
  5. ORDER BY: 정렬
  6. LIMIT: 일부만 보여줌

이 순서를 이해하면 아래 같은 상황에서 헷갈리지 않게 돼요.

  • “왜 SELECT에서 만든 별칭(alias)이 WHERE에서는 바로 안 되지?” 
    → WHERE가 SELECT보다 먼저 실행되기 때문이에요.
  • “왜 COUNT 같은 집계를 쓰면 GROUP BY가 필요하지?”
    → SELECT에서 집계를 계산하려면 그 전에 그룹이 먼저 만들어져 있어야 하기 때문이에요.

정리하자면 SQL 기본은 작성 순서와 실행 순서가 다르다는 사실을 이해하는 순간 훨씬 빠르게 실무에 적용할 수 있습니다.

 

 


4. SQL 각 절은 어떤 역할을 하나요?

4.1 SELECT: 무엇을 보여줄지 결정

SELECT는 결과 화면에 나타날 컬럼, 계산식, 별칭 등을 정의해요.

원본 컬럼 적어도 되고, 계산식 적어도 되고, 이름 바꿔도 됩니다.

SELECT
  event_name,
  COUNT(*) AS event_count,
  COUNT(DISTINCT user_pseudo_id) AS users
 

별칭(alias)을 지정하면 나중에 ORDER BY에서 재사용할 수 있어 편리합니다.


AS event_count → 별칭(alias)

※ 나중에 ORDER BY event_count 로 다시 쓸 수 있음

 

4.2 FROM: 어디에서 가져올지 지정

데이터를 읽어올 테이블 또는 뷰를 선택합니다.

FROM `gobang-bigquery.analytics_274122040.events_20251030`
 

특히 BigQuery에서는 프로젝트.데이터셋.테이블 형식으로 구성되어 있어요.

  • 빅쿼리는 프로젝트.데이터셋.테이블 형식
  • 여러 날짜 합칠 땐 events_* + _TABLE_SUFFIX로 필터

 

4.3 WHERE: 어떤 조건만 남길지 필터링

행 단위로 필요한 데이터만 선택합니다.

WHERE event_name = 'page_view'
WHERE event_name IN ('page_view', 'inquiry')
WHERE event_name = 'page_view' AND geo.country = 'South Korea'
 

문자열은 반드시 ' ' 안에 넣어야 합니다.

 

4.4 GROUP BY: 어떻게 묶을지 결정

집계함수가 있을 때 행을 묶어서 계산하도록 만드는 절입니다.

SELECT event_name, COUNT(*) AS cnt
FROM ...
GROUP BY event_name;

- 규칙: SELECT에서 집계되지 않은 컬럼은 모두 GROUP BY에 포함해야 합니다.

 

4.5 ORDER BY: 어떤 기준으로 정렬할지 결정

오름차순(ASC), 내림차순(DESC) 모두 사용 가능해요.

ORDER BY cnt DESC
ORDER BY event_date ASC

4.6 LIMIT: 얼마나 보여줄지 제한

결과 줄 수 제한할 때쓰는데요. 실무에서는 테스트할 때 거의 항상 씁니다.

LIMIT 10;

 


5. SQL 기본을 실무에서 어떻게 활용하나요?

이번에는 SQL 기본 구조를 실제 작업에 적용하는 대표적인 패턴 3가지를 살펴볼게요.

5.1 이벤트별 건수 조회

사용자 행동 이벤트의 양을 파악할 때 자주 사용하는 구조입니다.

SELECT
	event_name,
	COUNT(*) AS event_count
FROM `...events_20251030`
GROUP BY event_name
ORDER BY event_count DESC;
 

5.2 유입경로별 사용자 분석

마케팅 지표를 조회할 때 핵심적으로 활용돼요.

SELECT
  traffic_source.source AS source,
  traffic_source.medium AS medium,
  COUNT(DISTINCT user_pseudo_id) AS users
FROM `...events_20251030`
GROUP BY source, medium
ORDER BY users DESC;
 

5.3 특정 이벤트 파라미터 값 분포 확인

특정 기능 클릭, 문의 방법 등 사용자 선택 분포를 파악할 때 유용합니다.

SELECT
  ep.value.string_value AS param_value,
  COUNT(*) AS cnt
FROM `...events_20251030`,
     UNNEST(event_params) AS ep
WHERE event_name = 'inquiry'
  AND ep.key = 'method'
GROUP BY param_value
ORDER BY cnt DESC;
 

이 패턴을 익히면 대부분의 데이터 탐색 작업을 빠르게 해결할 수 있어요.

 


6. 주의) GA4 BigQuery는, 이것만으론 안됩니다 !

GA4 데이터는 이벤트 파라미터가 배열(REPEATED)로 저장돼요.
그래서 바로 접근할 수 없고, 먼저 UNNEST로 펼쳐야만 합니다.

FROM
  `...events_20251030`,
  UNNEST(event_params) AS ep
 

이렇게 펼친 뒤에는 ep.key, ep.value.string_value 형태로 접근할 수 있어 실무 분석에 활용할 수 있어요.

 

해당 내용은 다음 게시물에서 자세히 다루겠습니다.

 


7. SQL 기본을 사용할 때 유의해야 할 점은 무엇인가요?

SQL 기본 문법을 잘 이해했다고 해도, 비용과 성능을 고려한 몇 가지 규칙을 함께 기억하면 더 효율적으로 작업할 수 있어요.

★ 필요한 컬럼만 SELECT
★ 테이블 스캔 범위를 최소화
★ 날짜 테이블은 _TABLE_SUFFIX로 범위 지정
★ 실행 전 스캔 용량 확인

특히 BigQuery는 스캔 비용 기반이므로 필터링을 잘 설계하는 것이 중요합니다.


SQL 기본은 처음에는 어렵게 보일 수 있지만, 위에서 소개한 구조와 실행 순서를 이해하면 훨씬 자연스럽게 쿼리를 작성할 수 있어요.

 

실제 실무에서는 SELECT, FROM, WHERE 정도만 활용하는 간단한 분석도 많지만, GROUP BY와 ORDER BY를 연결해 활용하는 순간 데이터 분석의 폭이 크게 넓어집니다.

 

이런 흐름을 몸에 익히면 SQL을 활용해 어떤 데이터라도 구조적으로 이해하고 해석할 수 있는 힘이 생긴다는 점에서 의미가 있어요.