구글 시트 QUERY 함수 기초 — 수식 하나로 필터·정렬·집계

구글 시트에만 있는 함수입니다. 엑셀에는 없어요.

필터·정렬·집계를 수식 하나로 처리합니다. 엑셀에서 SUMIFS와 FILTER를 겹쳐 쓰던 걸 한 줄로 끝낼 수 있어요.

기본 형태

=QUERY(데이터범위, "쿼리문", 머리글행수)

예시

=QUERY(A1:D100, "select A, C where B = '서울'", 1)

A1:D100에서 B열이 ‘서울’인 행의 A열과 C열을 가져옵니다.

마지막 1은 머리글이 1행이라는 뜻입니다.

이 인수는 생략할 수 있는데, 생략하지 마세요. 구글 공식 문서는 생략하거나 -1로 두면 “내용을 기반으로 자동 감지”한다고 설명합니다. 문제는 자동 감지가 늘 맞지는 않는다는 점이에요. 머리글이 숫자처럼 생겼거나 데이터 첫 행이 문자열이면 엉뚱하게 잡습니다. 머리글이 1행이면 1, 없으면 0을 직접 적어두는 편이 안전합니다.

열은 알파벳으로 부릅니다

select A, C 처럼 원본 시트의 열 문자를 그대로 씁니다. 열 이름(제목)이 아니라 위치예요.

다만 IMPORTRANGE와 함께 쓰면 Col1, Col2로 바뀝니다.

=QUERY(IMPORTRANGE("URL","시트1!A:D"), "select Col1, Col3", 1)

이 차이 때문에 헷갈리는 경우가 많습니다. IMPORTRANGE 오류 해결 글도 함께 보시면 좋습니다.

자주 쓰는 명령

select — 어떤 열을 가져올지

"select *"           전부
"select A, C, D"     특정 열만

where — 조건

"select * where B = '서울'"          문자는 작은따옴표
"select * where D > 100000"          숫자는 그냥
"select * where B = '서울' and D > 100000"
"select * where B = '서울' or B = '부산'"
"select * where C contains '노트북'"  부분 일치
"select * where B is not null"        빈 칸 제외

문자열 조건은 작은따옴표로 감쌉니다. 큰따옴표는 쿼리문 전체를 감싸는 데 쓰니까요.

order by — 정렬

"select * order by D desc"        내림차순
"select * order by B asc, D desc" 여러 기준

group by — 집계

여기가 진짜 강력한 부분입니다.

"select B, sum(D) group by B"

지점별 매출 합계가 한 줄로 나옵니다. 피벗테이블을 만들 필요가 없어요.

쓸 수 있는 명령의 전체 목록과 문법은 구글이 공개한 쿼리 언어 레퍼런스에 정리돼 있습니다. QUERY 함수가 쓰는 문법이 바로 이것입니다.

"select B, sum(D), count(A), avg(D) group by B"

합계·건수·평균을 한꺼번에 볼 수도 있습니다.

limit — 개수 제한

"select * order by D desc limit 10"

매출 상위 10건입니다.

셀 값을 조건에 넣기

조건을 셀에서 받아오려면 &로 이어붙입니다.

=QUERY(A1:D100, "select * where B = '" & F2 & "'", 1)

작은따옴표 위치가 헷갈리기 쉬운데, '" & 와 & "' 형태로 감싼다고 기억하시면 됩니다.

숫자 조건이면 따옴표가 필요 없습니다.

=QUERY(A1:D100, "select * where D > " & F2, 1)

날짜 조건

날짜는 형식이 까다롭습니다.

"select * where A >= date '2026-10-01'"

date 키워드를 붙이고 yyyy-mm-dd 형식으로 써야 합니다.

셀에서 받아오려면 TEXT로 형식을 맞춥니다.

=QUERY(A1:D100, "select * where A >= date '" & TEXT(F2,"yyyy-mm-dd") & "'", 1)

자주 나는 오류

#VALUE! — 쿼리문이 틀렸습니다. 따옴표 짝이 안 맞거나 명령어 철자가 틀린 경우가 대부분입니다. 오류 셀에 마우스를 올리면 어디가 문제인지 알려줍니다.

결과가 안 나옵니다 — 조건에 맞는 데이터가 없거나, 문자열 조건에 공백이 섞여 있을 수 있습니다.

숫자 열인데 계산이 안 됩니다 — 그 열에 텍스트가 섞여 있으면 QUERY가 열 전체를 텍스트로 판단합니다. 원본을 정리해야 해요.

머리글이 데이터에 섞입니다 — 마지막 인수를 1로 지정하세요.

엑셀 사용자에게

엑셀에서 이렇게 하던 걸 대체합니다.

| 엑셀 | 구글 시트 QUERY | |—|—| | 필터 + 복사 | where | | 정렬 | order by | | SUMIFS | sum() group by | | 피벗테이블 | group by |

원본이 바뀌면 결과가 자동으로 따라 바뀝니다. 피벗테이블처럼 새로고침을 누를 필요가 없어요. 이게 가장 큰 장점입니다.

처음엔 문법이 낯설지만 select, where, group by 세 개만 익혀도 실무의 대부분이 해결됩니다.

댓글 남기기