top

상세 컨텐츠

본문 제목

데이터 필터링하기 - WHERE절

기획/데이터 분석

by PO/PM-Sky 2025. 4. 9. 00:37

본문

thumbnail

 

오늘은 SQL에서 데이터를 필터링하는 방법인 WHERE 절에 대해 정리해본다.
SQL은 데이터를 조회할 때 원하는 조건만 추려내야 할 때가 많은데, 이럴 때 WHERE 절을 사용하게 된다.

 

목차

 

WHERE 절이란?

WHERE 절은 특정 조건을 만족하는 데이터만 조회할 수 있게 하는 필터 조건이다.
데이터베이스에서 원하는 값만 추출할 수 있기 때문에, 굉장히 자주 사용하게 된다.

SELECT * FROM users  
WHERE age > 30

→ users 테이블에서 나이가 30세를 초과한 데이터만 조회하는 쿼리이다.

 

* WHERE 절 사용 시 주의할 점

  • 문자 비교 시 대/소문자를 구분해야 한다.
  • 예약어는 보통 대문자로 작성한다 (예: SELECT, FROM, WHERE, ORDER BY)
  • 테이블명이나 컬럼명은 DB에 정의된 대로 작성해야 한다.

* 데이터 타입에 따른 주의점

타입 예시 작성 방법
숫자 124 그대로 작성
문자 '124' 따옴표로 감싸야 문자로 인식된다
날짜 '2024-01-01' 'yyyy-mm-dd' 형식으로 작성한다
날짜+시간 '2024-01-01 14:30:00' 'yyyy-mm-dd hh:mm:ss' 형식으로 작성한다

 


WHERE절에서 사용하는 다양한 연산자

● 비교 연산자 (=, > , >=, <, <=, <>, !=)

WHERE 절에 비교 연산자를 조합하면 원하는 조건을 더욱 세분화할 수 있다.

연산자 의미
= 같다
> 초과
>= 이상
< 미만
<= 이하
!=, <> 같지 않다

 

-- 예시
WHERE age > 25
WHERE gender = 'female'
WHERE signup_date >= '2024-01-01'
WHERE status != 'deleted'

 

참고로 !=과 <>는 기능상 동일하지만,
<> 는 ANSI SQL 표준 문법이라고 한다.
ANSI SQL은 DBMS마다 다른 SQL 문법을 미국 표준 협회(American National Standards Institute)에서 표준화한 것으로, 오라클이나 MySQL 등 다양한 DB에서 호환성을 높이기 위해 만들어진 표준이다.

 

 논리 연산자 (OR, AND)

여러 조건을 함께 적용하고 싶을 때는 논리 연산자를 사용한다.

  • AND → 모든 조건을 만족해야 한다 (교집합 개념)
  • OR → 하나라도 만족하면 된다 (합집합 개념)
-- 예시
WHERE age > 25 AND city = 'Seoul'
WHERE status = 'active' OR signup_date >= '2024-01-01'

 

여러 개의 데이터 한 번에 찾기 (IN, BETWEEN)

  • IN을 사용하는 경우
    IN은 OR 조건을 반복하지 않고, 여러 개의 값을 한꺼번에 비교할 수 있을 때 사용하면 효율적이다.
    리스트처럼 묶어서 조건을 줄 수 있어 가독성도 좋고 유지 관리에도 유리하다.
-- Q1. ‘천안시’와 ‘안양시’에 있는 주민센터 데이터를 뽑아주세요.
SELECT *
FROM station
WHERE local IN ('천안시','안양시')

 

  • BETWEEN을 사용하는 경우
    BETWEEN은 범위 조건을 줄 때 사용하면 간결하고 직관적이다.
    BETWEEN A AND B는 A 이상 B 이하를 포함한다.
    단, 초과나 미만 조건이 필요한 경우에는 비교 연산자 >, <를 사용하는 것이 더 적절하다.
-- Q3-1. 온도가 30도 이상 50도 이하인 사우나 종류 데이터 

-- AND 사용
SELECT *
FROM sauna
WHERE lat >= 30
  AND lat <= 50
  
  
-- BETWEEN 사용
SELECT *
FROM sauna
WHERE lat BETWEEN 30 AND 50

 

값이 없는 데이터 찾기 (IS NULL / IS NOT NULL)

SQL에서는 값이 없는 상태를 NULL로 처리한다.
= 연산자 대신 IS NULL 혹은 IS NOT NULL을 사용하여 조건을 줄 수 있다.

-- 특정 컬럼의 값이 없는(NULL) 데이터 구하기 
-- Q1. agreement가 'yes'이면서 name이 없는 데이터
SELECT *
FROM customer_info
WHERE agreement = 'yes'
  AND name IS NULL

-- 반대로 특정 컬럼의 값이 없는 거 제외하고(NOT NULL) 데이터 구하기
SELECT *
FROM rental_history
WHERE bike_id = 'SPB-21745'
  AND distance IS NOT NULL

 

패턴에 맞는 문자 찾기 (LIKE / NOT LIKE)

문자열의 특정 패턴을 조건으로 찾을 때는 LIKE 또는 NOT LIKE를 사용한다.
이때 와일드카드로 %와 _를 사용할 수 있다.

와일드카드 의미
% 아무 문자 0개 이상
_ 아무 문자 1개
더보기

예시)

  • '강%' → "강"으로 시작하는 데이터
  • '%강' → "강"으로 끝나는 데이터
  • '%강%' → "강"이 포함된 데이터
  • '강__' → "강"으로 시작하고 세 글자인 데이터
-- Q1. 주소에 ‘천안시’가 들어간 데이터
SELECT *
FROM station
WHERE address LIKE '%천안시%';

 

* LIKE 심화

_는 원래 한 글자 와일드카드이지만, 진짜 문자로서 _를 포함한 문자열을 찾고 싶을 수도 있다.
이럴 때는 이스케이프 문자 \ 를 사용해서 문자로 인식시킬 수 있다.

 

예) '_analyst'로 끝나는 데이터 찾고 싶을 경우 → '%\_analyst' 로 작성한다


마치면서,,

오늘은 WHERE 절을 중심으로,

데이터를 원하는 조건에 맞춰 필터링하는 다양한 방법을 정리했다.


기본적인 비교 연산자와 논리 연산자 외에도,

여러 개의 조건을 묶을 수 있는 IN,

범위 조건에 유용한 BETWEEN,
비어 있는 값을 찾는 IS NULL,

그리고 문자열 패턴을 찾는 LIKE까지 살펴보았다.

 

WHERE 절은 SQL에서 가장 기본이 되는 필터링 도구이지만,
이처럼 다양한 연산자를 조합하면 데이터를 훨씬 더 유연하고 정확하게 조회할 수 있게 된다.

 

오늘 정리한 내용을 반복해서 연습하고,
실제 내가 다루는 서비스 데이터에 적용해보며 익숙해지는 것이 중요하다고 느꼈다.
작은 쿼리 한 줄도 디테일에 따라 결과가 완전히 달라질 수 있다는 점을 다시 한 번 실감하게 된다.

 

다음은 데이터를 정렬하는 방식에 대해 알아볼 예정이다.

 

 

(본 내용은 데이터리안 ‘SQL 데이터 분석 캠프 입문반’을 수강하며 작성한 내용입니다.)

'기획 > 데이터 분석' 카테고리의 다른 글

SQL 숫자 연산자 정리  (0) 2025.04.18
데이터베이스 이론  (1) 2025.04.16
데이터 순서 정렬하기  (0) 2025.04.15
데이터 추출하기  (0) 2025.04.07
데이터 분석 공부, 이젠 피할 수 없다.  (0) 2025.04.07

관련글 더보기