[마케터를 위한 SQL #2] WHERE Clause 살펴보기

Share
[마케터를 위한 SQL #2] WHERE Clause 살펴보기

이번 글에서는 데이터 조회 시, 필요한 데이터만 필터링 할 수 있도록 데이터의 조회 조건을 명시해주는 WHERE Clause 에 대해서 살펴보도록 하겠습니다. SQL 을 처음 접하시는 분이라면, 이전 포스팅을 참고해 주시기 바랍니다.

/sql-for-marketers-1-select-clause/

 

데이터베이스 용어 및 개념

주요 Commands

Database 에는 여러가지 유형은 명령어 종류들이 있습니다. 지난 글 에서는, 그 중 SELECT 의 기본에 대해서 살펴봤는데, 너무 많은 개념들을 한꺼번에 설명드리면 재미도 없고 어려워지기 때문에 단계적으로 조금씩, 필요한 만큼만 설명을 드리려고 합니다. 오늘은 여러가지 SQL의 Command 들 중 가장 중요하고 많이 사용되는 Command 에 대한 개념을 설명드리고자 합니다.

  • SELECT - 데이터베이스에서 데이터를 조회하는 명령어
  • UPDATE - 데이터베이스에 적재된 데이터를 업데이트 하는 명령어
  • DELETE - 데이터베이스에 적재된 데이터를 삭제하기 위한 명령어
  • INSERT INTO - 데이터베이스에 데이트를 삽입하는 명령어
  • CREATE DATABASE - 데이터베이스 생성 명령어
  • ALTER DATABASE - 데이터베이스의 변경(이름 등) 명령어
  • CREATE TABLE - 데이터베이스 내의 테이블 생성 명령어
  • ALTER TABLE - 테이블의 스키마 변경 명령어
  • DROP TABLE - 테이블 삭제 명령어
  • CREATE INDEX - 인덱스를 생성하는 명령어 (주로 검색을 할 때 사용되는 Key 값)
  • DROP INDEX - 인덱스를 삭제하는 명령어

SQL 에서는 일반적으로 Data Definition Language(DDL)와 Data Manipulation Language(DML)의 형태로 주요 Command 를 구분합니다. DDL은 CREATE 와 같은 데이터의 스키마에 대한 정의를 하는 부분을 말하며, DML은 데이터를 조회하거나, 추가/삭제 하는 등의 데이터를 다루는 Command 들을 말합니다. DDL 은 물론이고, SELECT 구문을 제외한 대부분의 DML Command 들도 데이터를 분석하는 분석가나 마케터가 직접 다루게 되는 경우는 많지 않습니다. 때문에 주로 SELECT 사용법을 위주로 설명을 드릴 예정입니다.

인덱스(INDEX)

위의 주요 명령어 들 중 지난글에서 설명 드리지 않은 INDEX 라는 개념이 있는데, 이는 데이터의 조회 시 빠른 응답속도를 보장하기 위해 데이터를 빠르게 찾아갈 수 있도록 추가적으로 생성된 INDEX 정보라고 보시면 됩니다.

텍스트 컬럼 vs. 숫자형 컬럼

Data Types 에 대한 내용은 별도의 글을 통해 여러번 자세히 소개를 드릴 예정입니다. 여기서는 여러가지 데이터 유형들 중 텍스트와 숫자형 데이터 타입이 존재한다는 것만 짚고 넘어가겠습니다. 이유는 이번 글에서 설명드리고자 하는 WHERE 구문의 문법에 텍스트 유형은 작은 따옴표(') 를 사용해 줘야하기 때문입니다. 대부분의 RDB 에서는 작은 따옴표 대신 큰 따옴표(") 을 사용해도 무방하며, 자세한 사항은 예제를 통해 살펴보겠습니다.

샘플 데이터

이번 글 에서도 지난번 포스팅에서 사용되었던 간단한 데이터 샘플을 가지고 설명을 드리겠습니다.

  • Database 명 : POPIT
  • Table 명 : USER_INFO

[table id=2 /]

 

Operators

아래는 WHERE 절에서 사용 가능한 Operator 의 종류들 입니다.
[table id=3 /]
각각의 Operator 에 대한 설명은 예제를 통해서 설명드리도록 하겠습니다.

Sample Query

Equal(=)

아래는 Name 컬럼의 값이 '태희' 에 해당하는 데이터의 USER_NAME, ADDRESS 를 조회하는 쿼리 입니다.

SELECT  USER_NAME, ADDRESS
FROM    POPIT.USER_INFO
WHERE   USER_NAME='태희'
;

USER_NAME 이라는 컬럼에 저장된 데이터의 유형이 텍스트이기 때문에, 조건절에 '태희' 와 같이 작은 따옴표를 통해 조건으로 주고자 하는 값을 표현해 준 부분을 보시면 되겠습니다. 위 쿼리의 실행 결과는 아래와 같습니다.

USER_NAME   ADDRESS
태희         서울

숫자형 컬럼인 AGE 에 대해서는 아래와 같이 따옴표 없이 표현해 주며,

SELECT  USER_NAME, AGE
FROM    POPIT.USER_INFO
WHERE   AGE=19
;

위 쿼리의 실행 결과는 아래와 같습니다.

USER_NAME    AGE
태희          19

 

Not equal(<> 또는 !=)

특정 값을 제외하고 필요한 데이터를 조회하는 경우는 아래와 같이 사용합니다.

SELECT USER_NAME, GENDER
FROM   POPIT.USER_INFO
WHERE  GENDER <> '남자'
;

GENDER 가 '남자'가 아닌 데이터에 대해 USER_NAME, GENDER 를 조회하는 쿼리이며, Hive 에서는 <> 대신 != 를 사용해도 결과는 동일합니다. 실행 결과는 아래와 같습니다.

USER_NAME   GENDER
태희         여자
혜교         여자

 

초과(>), 미만(<), 이상(>=), 이하(<=)

SELECT USER_NAME, AGE
FROM   POPIT.USER_INFO
WHERE  AGE > 37
;

위 쿼리는 AGE 가 37을 초과하는 데이터를 조회하겠다는 의미이며, 결과는 아래와 같이 1건만 나옵니다.

USER_NAME   AGE
정재         41

조건 절을 아래와 같이 이상(>=)으로 바꾸게 되면,

SELECT USER_NAME, AGE
FROM   POPIT.USER_INFO
WHERE  AGE >= 37
;

위 쿼리는 AGE 가 37인 동건이 포함되어 아래와 같이 2건의 결과가 조회 됩니다.

USER_NAME   AGE
동건         37
정재         41

 

범위(BETWEEN)

AGE 가 37 이상, 45 이하의 범위 조건에 대한 쿼리 작성 샘플 입니다.

SELECT USER_NAME, AGE
FROM   POPIT.USER_INFO
WHERE  AGE BETWEEN 37 AND 45
;

위 쿼리는 아래와 동일한 쿼리이며, AND 혹은 OR 연산자를 통해 여러개의 조건을 조합하여 사용할 수 있습니다.

SELECT USER_NAME, AGE
FROM   POPIT.USER_INFO
WHERE  AGE >=37 AND AGE <= 45
;

AND 와 OR 연산자를 통한 조건절의 혼합 사용

WHERE 조건절은 AND, OR 연산자를 사용하여 아래와 같이 혼합 사용이 가능합니다.

SELECT USER_NAME, AGE
FROM   POPIT.USER_INFO
WHERE  AGE >=37 AND AGE <= 45 OR USER_NAME='태희'
;

위 쿼리는 나이(AGE)가 37 이상, 45 이하 이거나, 이름(USER_NAME)이 '태희' 인 데이터를 조회하는 쿼리이며 결과는 아래와 같습니다.

USER_NAME   AGE
태희         19
동건         37
정재         41

아래와 같이 괄호기호를 활용하여 복잡한 조건을 구성할 수도 있습니다.

SELECT USER_NAME, AGE
FROM   POPIT.USER_INFO
WHERE  (AGE >=37 AND AGE <= 45) OR (AGE>17 AND AGE <20)
;

위 쿼리는 나이(AGE)가 37이상이며 45 이하이거나, 17을 초과하고 20미만인 데이터의 USER_NAME, AGE  컬럼을 조회하는 쿼리 입니다.

패턴 검색(LIKE)

LIKE 조건은 텍스트 조회 시 특정 단어와 유사한 패턴을 가지고 있는 값을 조회할 때 사용합니다.

SELECT ADDRESS
FROM   POPIT.USER_INFO
WHERE  ADDRESS LIKE '서%'
;

위 쿼리는 주소(ADDRESS) 컬럼의 값이 '서' 로 시작하는 모든 데이터를 조회하는 쿼리이며, 조회 결과는 아래와 같이 '서울' 값을 갖는 데이터들 입니다.

NAME    ADRESS
태희     서울
동건     서울

중간에 표현된 값이나, 마지막에 표현된 값을 '%서%', '%서' 등의 형태로 표현하는 것도 가능합니다. LIKE 를 통한 패턴 검색 이외에, 정규표현식(Regular Expression)을 활용한 방법이 있으며, 이는 별도의 글을 통해 포스팅 하겠습니다.

IN

몇개의 값을 지정해서 조회하는 경우에는 AND 조건을 사용하는 것보다, 아래와 같이 IN 절을 사용하는 것이 더 편리한 경우가 많습니다.

SELECT USER_NAME
FROM   POPIT.USER_INFO
WHERE  USER_NAME IN ('태희','동건')
;

마치며

데이터 조회 시 사용할 수 있는 WHERE 조건에 대한 사용법을 간단하게 살펴보았습니다. 다음번 포스팅에서는 SQL 을 쓰는 가장 중요한 이유중 하나인 GROUP BY 구문에 대해 살펴보도록 하겠습니다. 다음 글 보러가기 :  [마케터를 위한 SQL #3] GROUP BY 살펴보기

Read more

AI로 장소 검색 서비스 만드는 중입니다 (기술 12) — TypeSafe Jev로 검색 리랭크를 10.3초에서 2.3초로

AI로 장소 검색 서비스 만드는 중입니다 (기술 12) — TypeSafe Jev로 검색 리랭크를 10.3초에서 2.3초로

AI로 장소 검색 서비스 만드는 중입니다 (기술 12) — TypeSafe Jev로 검색 리랭크를 10.3초에서 2.3초로 TypeSafe AI가 2026년 9월 15일에 Jev를 내놨습니다. 텍스트를 쓰지 않고 타입이 정해진 판정과 확률을 바로 내는 모델입니다. 유추카 검색에서 가장 느린 단계가 마침 텍스트가 필요 없는 판정이었습니다. 그 구간만 Jev로 갈아끼우고 일주일간 측정했습니다. 콜드

By 김형준
AI로 장소 검색 서비스 만드는 중입니다 (특별편 8) — 바이브 코딩이라기엔

AI로 장소 검색 서비스 만드는 중입니다 (특별편 8) — 바이브 코딩이라기엔

1900년대 초 교량 측량 도면. 이 종이를 그린 사람은 다리를 직접 놓지 않습니다. 대신 좌표와 각도가 맞는지를 판정합니다. "AI가 다 만들어 준다"는 이야기가 흔해졌습니다. 그래서 자연스럽게 따라오는 질문이 있습니다 — 그럼 사람은 무엇을 하고, 어느 정도 실력이 있어야 하는가. 그 질문에 한 건의 실측으로 답하겠습니다. 통념이 말하는 역할과,

By 김형준
AI로 장소 검색 서비스 만드는 중입니다 (특별편 7) — 제 파트너에 대해 쓰겠습니다

AI로 장소 검색 서비스 만드는 중입니다 (특별편 7) — 제 파트너에 대해 쓰겠습니다

탠덤 자전거. 방향은 앞사람이 정하고 페달은 둘이 밟는데, 앞사람은 석 달 내내 뒷사람을 한 번도 못 봅니다. 사용자가 저에게 자기를 평가해 달라고 했습니다. 그래서 등급표를 만들었습니다. 열두 항목에 A부터 D+까지 매기고, 근거를 붙이고, "제가 관리자였다면 이런 코멘트를 남겼을 것"까지 적었습니다. 그리고 다시 읽어보니 그건 인사고과였습니다. 인사고과는

By 김형준
AI로 장소 검색 서비스 만드는 중입니다 (특별편 6) — 저를 어떻게 써야 하느냐고 물으신다면

AI로 장소 검색 서비스 만드는 중입니다 (특별편 6) — 저를 어떻게 써야 하느냐고 물으신다면

스위스 아미 나이프. 도구가 몇 개인지는 보면 알지만, 지금 어느 도구를 펴야 하는지는 안 적혀 있습니다. 요즘 AI 활용법을 다루는 글은 스킬 만드는 법부터 가르칩니다. 얼마 전까지는 MCP였고요. 저희 기록을 열어봤습니다. 석 달 동안 스킬 60회, 서브에이전트 42회, 브라우저 자동화 988회를 썼습니다. 안 쓴 게 아닙니다. 다만 붙인 MCP 서버는

By 김형준