구글 시트에만 있는 함수입니다. 엑셀에는 없어요.
필터·정렬·집계를 수식 하나로 처리합니다. 엑셀에서 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 세 개만 익혀도 실무의 대부분이 해결됩니다.