구글 스프레드 시트를 사용하다보면 선택하고 싶은 데이터에 자유롭게 조건을 걸어서 선택하고 싶은데, if함수는 다중 컬럼에 조건을 거는것이 쉽지 않기 때문에 sql에서 하는 것 처럼 쿼리로 데이터를 추출해서 시트에 뿌려주고 싶은 생각이 들때가 많습니다. 구글 스프레드시트는 다행히도 쿼리 함수 기능을 지원하는데요, 문법도 sql에서 쓰는 select from where의 구조랑 크게 다르지 않아서 편하게 사용할 수 있습니다. 제가 arrayformula와 함께 구글시트에서 가장 유용하게 사용하는 기능 중 하나입니다.
구글시트 쿼리함수 기본 문법
쿼리함수의 인자로 범위, 쿼리, 헤더포함여부 3가지가 들어가며, 컬럼의 선택은 열 기호인 A,B,C,... 를 사용하면 됩니다. 아래 예제를 보면 C2:H29는 내가 쿼리를 날리고 싶은 데이터가 존재하는 범위이고, 이 데이터에서 C,D열을 SELECT 하는데 C열이 3000000 이상인 경우로 조건을 걸어주는 것 입니다. 마지막 1은 데이터의 첫 row를 헤더로 사용하겠다는 의미입니다.
=QUERY(C2:H29,"select C,D where C > 3000000",1)
sql의 쿼리는 select / from / where로 구성되지만, 구글시트의 쿼리 함수는 from 부분이 앞에 함수의 인자로 들어가기 때문에 select ... where ... 이런 구조로 쿼리가 작성됩니다.
쿼리 다중검색 조건
쿼리함수를 사용하는게 편한 이유는 무엇보다도 조건을 여러개 설정해 줄 수 있기 때문일 것입니다. 여러가지 조건을 설정하기 위해서는 where절에 AND 또는 OR의 논리 연산자를 이용해서 원하는 조건을 여러개 추가할 수 있습니다. 예를 들어 다음과 같은 인구 정보를 담고있는 테이블이 있다고 해봅니다.
이 중에 연령은 50~54세 이거나 2020년도에 총 인구가 300만명 이상인 연령대의 데이터만 추출하고 싶다면 어떻게 해야할까요? 아래와 같이 OR 논리 연산자를 이용해서 where절에 다중 조건을 설정했습니다.
=QUERY(A2:H31,"select B,C,D,E,F,G,H where B = '50~54세' OR H>3000000",1)
쿼리의 결과로 위에서 설정한 조건에 해당하는 연령대의 데이터만 SELECT 할 수있었습니다.
이번엔 AND 연산자를 이용해서 2020년도에 총 인구가 300만명 이상이면서 2015년에도 인구가 300만명 이상인 연령대의 데이터만 추출하고 싶다면 어떻게 해야할까요? where 절에 AND조건을 활용해서 다음과 같이 쿼리 함수를 짜면 됩니다.
=QUERY(A2:H31,"select B,C,D,E,F,G,H where C > 3000000 AND H>3000000",1)
마지막으로 구글시트 쿼리 함수는 실시간으로 계속해서 조건에 맞는 결과들을 시트에 뿌려주기 때문에 구글시트를 이용해 대시보드를 만든다거나, 업무 자동화를 진행할때 매우 유용하게 쓰일 수 있으니 꼭 기억하고 활용하길 바랍니다.
*쿼리함수를 드롭다운 메뉴와 함께 응용하면 사용자 친화적이면서 동적인 구글시트를 만들수 있다.
2022.05.05 - [코딩과 업무스킬] - [구글시트] 드롭다운 목록 만들기
'코딩과 업무스킬' 카테고리의 다른 글
[구글시트] 드롭다운 목록 만들기 (2) | 2022.05.05 |
---|---|
[구글시트] IMPORTRANGE 함수로 다른 시트 데이터 가져와서 통합 (0) | 2022.03.18 |
[구글시트]조건범위 합계 sumif 계산하기 (0) | 2022.01.24 |
[구글시트] 스파크라인(sparkline) 함수로 셀 안에 그래프 넣기 (5) | 2022.01.12 |
[레드시프트] 매 월의 마지막 날짜 계산과 날짜 더하기 빼기 (0) | 2022.01.08 |