데이터 분석의 시작, 복잡한 코드 없이 SQL의 강력함을 경험하세요
안녕하세요 여러분! 혹시 이런 적 있으시죠?!
엑셀처럼 생긴 구글 스프레드시트에서 대량의 데이터를 정리하려고 했는데, 필터와 정렬만으로는 한계를 느끼셨나요?
아니면 데이터를 원하는 형태로 요약하거나
조건에 맞게 추출하고 싶은데 어떻게 해야 할지 몰라서 고민하신 적 있으신가요?
저도 그랬습니다. 수많은 행과 열 사이에서 원하는 정보를 찾느라 시간을 허비했죠.
하지만 QUERY 함수를 알게 된 후로는 데이터 작업이 완전히 달라졌어요!
오늘은 데이터 분석의 마법 같은 도구, 구글 스프레드시트의 QUERY 함수에 대해 아주 쉽고 친절하게 알려드릴게요.
SQL을 몰라도, 프로그래밍 경험이 없어도 괜찮아요.
이 글을 따라오시면 복잡한 데이터도 자신 있게 다룰 수 있게 될 거예요!
📋 목차
QUERY 함수란? 기본 개념 이해하기 🧐
QUERY 함수는 구글 스프레드시트에서 제공하는 가장 강력한 함수 중 하나입니다.
데이터베이스 언어인 SQL(Structured Query Language)과 비슷한 방식으로 작동하며, 복잡한 데이터 분석을 간단한 명령어로 수행할 수 있게 해줍니다.
QUERY 함수의 진짜 매력은 무엇일까요?
엑셀의 여러 함수들(VLOOKUP, SUMIF, COUNTIF 등)을 조합해서
사용해야 했던 복잡한 작업들을 단 한 줄의 QUERY 문으로 해결할 수 있다는 점입니다.
마치 데이터에게 우리 언어로 질문을 던지는 것처럼 원하는 정보를 추출할 수 있죠!
💎 핵심 포인트:
QUERY 함수는 구글 스프레드시트에서만 사용할 수 있는 특별한 함수입니다.
엑셀에는 없는 기능이니, 구글 스프레드시트를 사용하는 큰 이유 중 하나가 되기도 합니다!
이 함수를 이해하면 데이터를 필터링하고, 정렬하고, 계산하고, 요약하는 등 다양한 작업을 쉽게 할 수 있습니다.
예를 들어, "특정 지역에서 판매량이 가장 높은 제품이 무엇인지" 또는 "각 부서별 평균 급여가 얼마인지" 등의 질문에 빠르게 답을 얻을 수 있어요.
QUERY 함수 문법과 기본 사용법 📝
QUERY 함수의 기본 구조는 생각보다 간단합니다.
기본 형태는 다음과 같아요:
=QUERY(데이터_범위, "SQL_형식의_쿼리_문자열", [헤더_행의_개수])
각 매개변수를 자세히 살펴볼까요?
매개변수 | 설명 | 예시 |
---|---|---|
데이터_범위 | 쿼리를 실행할 데이터가 있는 범위 | A1:F100, Sheet2!A:Z |
SQL_형식의_쿼리_문자열 | SQL과 유사한 명령어로 데이터 처리 방법을 지정 | "SELECT A, B WHERE C > 100" |
헤더_행의_개수 | 선택 사항으로, 헤더 행의 수를 지정 (기본값: 1) | 0, 1, 2 등 |
실제로 간단한 예를 통해 이해해 볼까요? 아래는 기본적인 QUERY 함수 예시입니다:
=QUERY(A1:D100, "SELECT A, B, C WHERE D > 50 ORDER BY C DESC", 1)
이 예시는 다음과 같은 의미를 가집니다:
✅ 데이터 범위: A1부터 D100까지의 영역을 대상으로 합니다.
✅ 쿼리 내용: A, B, C 열을 선택하되, D 열의 값이 50보다 큰 행만 선택합니다.
✅ 정렬 방식: 결과를 C 열 기준으로 내림차순 정렬합니다.
✅ 헤더 행: 첫 번째 행을 헤더로 간주합니다.
💡 TIP: QUERY 함수에서 열은 A, B, C와 같은 열 문자로 참조할 수도 있고, Col1, Col2와 같이 숫자로도 참조할 수 있어요. 첫 번째 열은 Col1입니다!
SELECT와 WHERE로 데이터 추출하기 🔍
QUERY 함수에서 가장 기본이 되는 두 가지 명령어는 SELECT와 WHERE입니다.
이 두 명령어만 잘 이해해도 많은 작업을 할 수 있어요!
SELECT 명령어 - 열 선택하기
SELECT는 어떤 열을 결과에 포함시킬지 지정합니다.
아래와 같은 다양한 방식으로 사용할 수 있습니다:
-- 모든 열 선택하기
SELECT *
-- 특정 열만 선택하기
SELECT A, C, E
-- 열에 함수 적용하기
SELECT A, AVG(B), SUM(C)
-- 열에 별칭(별명) 부여하기
SELECT A, B/100 as '백분율'
WHERE 조건 - 행 필터링하기
WHERE는 어떤 행을 결과에 포함시킬지 조건을 지정합니다.
다양한 연산자를 사용해 원하는 데이터만 추출할 수 있어요:
연산자 | 의미 | 예시 |
---|---|---|
=, >, <, >=, <=, != | 비교 연산자 | WHERE A > 100 |
AND, OR | 논리 연산자 | WHERE A > 10 AND B < 50 |
LIKE | 문자열 패턴 매칭 | WHERE A LIKE '%김%' |
IN | 목록 중 하나와 일치 | WHERE A IN ('서울','부산','대구') |
CONTAINS | 문자열 포함 여부 | WHERE A CONTAINS '신제품' |
이 두 명령어를 조합하면 원하는 데이터를 정확하게 추출할 수 있습니다.
예를 들어, 다음과 같은 쿼리는 '판매' 시트에서 2023년에 서울 지역에서 판매된 제품의 이름과 판매량만 선택합니다:
=QUERY(판매!A:E, "SELECT B, D WHERE A CONTAINS '2023' AND C = '서울'", 1)
⚠️ 주의: 쿼리 문자열 안에서 따옴표를 사용해야 할 때는 작은따옴표(')를 사용해야 합니다. 큰따옴표(")를 사용하면 QUERY 함수의 구문이 깨집니다!
GROUP BY와 ORDER BY로 데이터 정리하기 📊
데이터를 추출하는 것도 중요하지만, 추출한 데이터를 의미 있게 정리하는 것도 중요합니다.
QUERY 함수에서는 GROUP BY와 ORDER BY 명령어를 사용해 데이터를 더욱 효과적으로 정리할 수 있어요.
GROUP BY - 데이터 그룹화하기
GROUP BY는 지정한 열을 기준으로 데이터를 그룹화합니다.
주로 SUM, AVG, COUNT 같은 집계 함수와 함께 사용하여 그룹별 통계를 계산할 때 활용됩니다.
예를 들어, 지역별 총 매출액을 계산하고 싶다면 다음과 같이 작성할 수 있습니다:
=QUERY(A1:D100, "SELECT C, SUM(D) WHERE D > 0 GROUP BY C", 1)
이 쿼리는 다음과 같은 의미를 가집니다:
✅ C 열: 지역 정보가 있는 열입니다.
✅ D 열: 매출액 정보가 있는 열입니다.
✅ 결과: 각 지역별로 매출액의 합계를 보여줍니다.
GROUP BY를 사용할 때 주로 활용하는 집계 함수들은 다음과 같습니다:
함수 | 설명 | 예시 |
---|---|---|
SUM() | 합계 계산 | SUM(B) |
AVG() | 평균 계산 | AVG(C) |
COUNT() | 개수 세기 | COUNT(A) |
MAX() | 최댓값 찾기 | MAX(D) |
MIN() | 최솟값 찾기 | MIN(D) |
"QUERY 함수의 GROUP BY 기능을 활용하면서 우리 부서의 월별 매출 보고서 작성 시간이 이전의 1/3로 줄었어요. 지역별, 제품별 분석도 클릭 몇 번으로 가능해졌죠." - 김지원, 마케팅 데이터 분석가
ORDER BY - 데이터 정렬하기
ORDER BY는 결과를 특정 열을 기준으로 정렬합니다.
기본값은 오름차순(ASC)이며, 내림차순으로 정렬하려면 DESC를 추가하면 됩니다.
예를 들어, 매출액이 높은 제품부터 순서대로 보고 싶다면:
=QUERY(A1:D100, "SELECT B, SUM(D) GROUP BY B ORDER BY SUM(D) DESC", 1)
여러 열을 기준으로 정렬할 수도 있습니다:
=QUERY(A1:E100, "SELECT A, B, C, D, E ORDER BY A ASC, D DESC", 1)
이 쿼리는 A열을 기준으로 오름차순 정렬한 후, A열 값이 같은 항목들은 D열을 기준으로 내림차순 정렬합니다.
💡 TIP: GROUP BY와 ORDER BY를 함께 사용할 때, ORDER BY는 항상 GROUP BY 뒤에 와야 합니다. 순서를 지켜주세요!
실무에서 바로 쓰는 QUERY 함수 예제 5가지 💼
이제 QUERY 함수의 기본 개념을 이해했으니, 실제 업무에서 바로 활용할 수 있는 예제들을 살펴보겠습니다.
이 예제들을 응용하면 다양한 데이터 분석 작업을 쉽게 수행할 수 있을 거예요!
예제 1: 조건에 맞는 데이터 추출하기
판매 데이터에서 특정 기간, 특정 지역의 데이터만 추출해 보겠습니다:
=QUERY(판매데이터!A:F,
"SELECT A, B, C, D, E, F
WHERE A >= date '2023-01-01'
AND A <= date '2023-03-31'
AND C = '서울'", 1)
이 쿼리는 2023년 1분기(1월~3월) 동안 서울 지역의 모든 판매 데이터를 추출합니다.
예제 2: 피벗 테이블처럼 데이터 요약하기
각 제품별, 지역별 총 판매액을 계산해 보겠습니다:
=QUERY(판매데이터!A:F,
"SELECT B, C, SUM(E)
GROUP BY B, C
PIVOT D", 1)
이 쿼리는 B열(제품)과 C열(지역)을 기준으로 그룹화하고, D열(월)로 피벗하여 E열(판매액)의 합계를 계산합니다.
결과는 제품과 지역별로 각 월의 판매액을 보여주는 피벗 테이블 형태가 됩니다.
예제 3: 상위 N개 항목 추출하기
매출액 기준 상위 5개 제품을 추출해 보겠습니다:
=QUERY(판매데이터!A:F,
"SELECT B, SUM(E)
GROUP BY B
ORDER BY SUM(E) DESC
LIMIT 5", 1)
이 쿼리는 B열(제품)별로 E열(판매액)의 합계를 계산하고, 판매액이 높은 순서로 정렬한 후 상위 5개만 추출합니다.
예제 4: 조건부 계산하기
판매량에 따라 '높음', '중간', '낮음'으로 분류해 보겠습니다:
=QUERY(판매데이터!A:F,
"SELECT A, B, C, D, E,
CASE
WHEN E > 1000 THEN '높음'
WHEN E > 500 THEN '중간'
ELSE '낮음'
END
WHERE A >= date '2023-01-01'", 1)
이 쿼리는 CASE 문을 사용해 E열(판매액)의 값에 따라 다른 레이블을 부여합니다.
예제 5: 날짜 데이터 활용하기
월별 총 판매액을 계산해 보겠습니다:
=QUERY(판매데이터!A:F,
"SELECT FORMAT_DATE('%Y-%m', A) as '월', SUM(E) as '총 판매액'
GROUP BY FORMAT_DATE('%Y-%m', A)
ORDER BY FORMAT_DATE('%Y-%m', A)", 1)
이 쿼리는 A열(날짜)의 값을 'YYYY-MM' 형식으로 변환하고, 이를 기준으로 그룹화하여 E열(판매액)의 합계를 계산합니다.
💎 핵심 포인트:
QUERY 함수를 사용할 때는 실제 데이터 구조를 잘 파악하는 것이 중요합니다.
특히 날짜 형식, 숫자 형식 등을 확인하고, 필요하다면 FORMAT_DATE, TO_TEXT 같은 함수를 활용해 데이터를 적절히 변환해 주세요!
자주 묻는 질문 (FAQ) ❓
❓ QUERY 함수와 FILTER 함수는 어떻게 다른가요?
QUERY 함수는 SQL과 유사한 문법을 사용하여 데이터를 더 복잡하게 조작할 수 있습니다. 단순 필터링뿐만 아니라 그룹화, 정렬, 계산 등 다양한 작업을 한 번에 수행할 수 있어요. 반면 FILTER 함수는 단순히 조건에 맞는 행만 걸러내는 기능에 특화되어 있습니다. 간단한 필터링만 필요하다면 FILTER가 더 직관적일 수 있지만, 복잡한 데이터 처리가 필요하면 QUERY가 훨씬 강력합니다.
❓ QUERY 함수에서 자주 발생하는 오류는 무엇인가요?
가장 흔한 오류는 따옴표 문제입니다. QUERY 함수의 두 번째 인자는 큰따옴표로 감싸야 하는데, 그 안에서 문자열을 표현할 때는 반드시 작은따옴표를 사용해야 합니다. 예를 들어 WHERE A = "서울"이 아니라 WHERE A = '서울'로 써야 합니다. 또한 열이 비어있는 경우나 데이터 형식이 일치하지 않는 경우(예: 숫자를 기대하는데 텍스트가 있는 경우)에도 오류가 발생할 수 있습니다. 이럴 때는 IFERROR 함수로 감싸거나 데이터 전처리를 해주세요.
❓ QUERY 함수로 여러 시트의 데이터를 한번에 분석할 수 있나요?
QUERY 함수 자체로는 한 번에 하나의 데이터 범위만 분석할 수 있습니다. 하지만 여러 시트의 데이터를 분석하려면 다음과 같은 방법을 사용할 수 있어요: 1) QUERY 전에 IMPORTRANGE나 {중괄호 표기법}을 사용해 데이터를 하나로 합친 후 분석, 2) 각 시트를 개별적으로 QUERY한 후 결과를 결합, 3) Apps Script를 활용해 여러 시트의 데이터를 분석하는 사용자 정의 함수 만들기. 간단한 해결책은 모든 데이터를 임시로 한 시트에 복사하여 분석하는 것입니다.
❓ QUERY 함수에서 사용할 수 있는 모든 SQL 명령어는 무엇인가요?
구글 스프레드시트의 QUERY 함수는 완전한 SQL을 지원하지는 않지만, 기본적인 SQL과 유사한 명령어들을 제공합니다. 주요 지원 명령어로는 SELECT(열 선택), WHERE(조건 필터링), GROUP BY(그룹화), ORDER BY(정렬), LIMIT(결과 제한), OFFSET(시작점 지정), LABEL(열 이름 변경), FORMAT(형식 지정), PIVOT(피벗 테이블), HAVING(집계 후 필터링), 그리고 집계 함수(SUM, COUNT, AVG, MIN, MAX)가 있습니다. 또한 CONTAINS, LIKE 같은 문자열 검색 연산자와 AND, OR, NOT 같은 논리 연산자도 사용할 수 있습니다.
❓ QUERY 함수의 성능을 향상시키는 방법이 있나요?
대량의 데이터를 다룰 때 QUERY 함수의 성능을 향상시키는 몇 가지 방법이 있습니다: 1) 필요한 열만 선택하여 처리할 데이터 양 줄이기, 2) 가능하면 전체 열 범위(A:Z) 대신 구체적인 범위 지정하기(A1:Z1000), 3) 중간 계산 결과를 별도 셀에 저장하여 복잡한 중첩 QUERY 피하기, 4) ARRAYFORMULA와 같은 무거운 함수와 함께 사용 시 주의하기, 5) 데이터가 매우 많다면 필터 뷰나 피벗 테이블 고려하기. 또한 데이터를 정렬된 상태로 유지하면 검색 성능이 향상될 수 있습니다.
❓ QUERY 함수를 사용할 때 날짜와 시간을 어떻게 처리하나요?
QUERY 함수에서 날짜를 처리할 때는 date 키워드나 FORMAT_DATE 함수를 사용할 수 있습니다. 예를 들어, "WHERE A > date '2023-01-01'"처럼 특정 날짜와 비교하거나, "SELECT FORMAT_DATE('%Y-%m', A)"처럼 날짜 형식을 변환할 수 있습니다. 또한 YEAR(), MONTH(), DAY() 같은 함수로 날짜 성분을 추출할 수도 있습니다. 시간 데이터의 경우 "WHERE TIMEOFDAY(A) < '12:00:00'"와 같이 비교할 수 있으며, HOUR(), MINUTE(), SECOND() 함수로 시간 성분을 추출할 수 있습니다. 날짜 계산을 위해 DATEDIF()나 날짜 간 뺄셈도 가능합니다.
마치며: QUERY 함수로 데이터 분석의 첫 걸음을 내딛어 보세요! 👣
지금까지 구글 스프레드시트의 강력한 무기, QUERY 함수에 대해 알아보았습니다.
처음에는 어렵게 느껴질 수 있지만, 기본 개념만 이해하면 엄청난 시간 절약과 데이터 인사이트를 얻을 수 있어요!
여러분이 이 글을 통해 QUERY 함수의 기본 사용법을 익히셨다면,
이제 실제 데이터로 직접 실습해 보는 것을 추천드립니다.
작은 데이터셋부터 시작해서 점점 복잡한 쿼리를 작성해 보면서 실력을 쌓아가세요.
혹시 특정 데이터 분석에 어려움을 겪고 계신가요?
댓글로 여러분의 데이터 분석 고민이나 QUERY 함수 관련 질문을 남겨주시면 최대한 도움을 드리겠습니다.
서로의 경험과 노하우를 나누면서 함께 성장해 나가요!
다음에는 QUERY 함수와 함께 사용하면 좋은 다른 고급 함수들(ARRAYFORMULA, UNIQUE, FILTER 등)에
대해서도 알아볼 예정이니 기대해 주세요.
데이터 분석의 여정을 즐겁게 이어나가시길 바랍니다! 🚀
그럼 다음 글에서 만나요! 여러분의 데이터 분석 실력 향상을 항상 응원합니다. 💪
'구글 스프레드시트' 카테고리의 다른 글
구글 스프레드시트 VLOOKUP 완벽 정리 – 실전 예제와 함께 배우기 (0) | 2025.03.14 |
---|---|
구글 스프레드시트 매크로 기능 활용법 - 반복 작업 줄이기 (2) | 2025.03.14 |
구글 스프레드시트 자동화의 모든 것: 업무 효율 극대화하기 (2) | 2025.03.13 |
구글 스프레드시트와 엑셀 비교! 어떤 점이 더 좋을까? (2) | 2025.03.12 |
구글 스프레드시트 조건부 서식 활용법 - 자동 색상 변경하기 (0) | 2025.03.12 |