엑셀 필터 걸다가 퇴근 못할 뻔... SQL WHERE절로 100만 건 데이터 0.1초 만에 찾기

2025. 12. 7. 22:38SQL

반응형

엑셀로 대용량 데이터를 다뤄본 사람이라면 공감할 것이다.
데이터가 몇십만 줄만 넘어가도, 특정 조건으로 '필터(Filter)'를 거는 순간 모래시계가 빙글빙글 돌며 멈춰버리는 그 공포를... 😱

오늘 SQL 실습의 주제는 바로 이 "데이터 솎아내기(Filtering)"다.
SQL에서는 WHERE라는 단어 하나만 알면, "서울 사는 30대 남성 중 지난달에 가입한 사람" 같은 복잡한 조건도 0.1초 만에 뽑아낼 수 있다.

오늘은 영화 대여점 데이터에서 내가 원하는 조건의 데이터만 핀셋처럼 골라내는 과정을 기록해 본다.

1. 숫자 콕 집어내기 (=): 엑셀보다 빠르다

가장 기본은 "정확히 일치하는 값"을 찾는 것이다.
결제 내역(`payment`) 데이터에서 금액(`amount`)이 딱 $0.99인 건들만 찾아보고 싶었다.

SELECT *
FROM payment
WHERE amount = 0.99;

금액이 0.99만 필터링한 결과. 버벅되지않고 바로 나온다.

실행하자마자 결과가 떴다. 엑셀이었다면 필터 드롭다운 메뉴가 내려오는 데만 한세월이었을 텐데, SQL은 데이터 양과 상관없이 즉답을 내놓는다. 속이 다 시원하다.

2. 문자 찾기: 따옴표('')의 중요성

이번엔 숫자 말고, 고객 명단(`customer`)에서 이름이 'Jared'인 사람을 찾아보았다.
여기서 비전공자가 가장 많이 하는 실수가 있다.

💡 비전공자의 시행착오: 따옴표
엑셀 함수를 쓸 때 문자에 큰따옴표("")를 쓰는 습관 때문에 WHERE name = "Jared"라고 썼다가 에러가 났다.


SQL에서는 문자열을 반드시 작은따옴표('')로 감싸야 한다. (이건 그냥 외워야 한다.)
SELECT *
FROM customer
WHERE first_name = 'Jared';

Jared 이름 필터로 검색 결과.

🚨 또 하나의 주의점: 대소문자 구분
SQL(PostgreSQL)은 대소문자를 엄격하게 구분한다. 'jared'라고 소문자로 검색하면 아무것도 안 나온다. (엑셀은 대소문자 상관없이 찾아주는데, SQL은 좀 깐깐하다.)


3. 이상, 이하 찾기 (부등호 활용)

"가격이 $20 이상인 영화"처럼 범위를 찾을 때는 수학 시간에 배운 부등호(>, <, >=, <=)를 쓰면 된다.

SELECT title, replacement_cost
FROM film
WHERE replacement_cost >= 20;

등호를 사용해서 배상비용 20이상만 필터한 결과.

분실 시 배상 비용(replacement_cost)이 20달러 이상인, 소위 '비싼 영화' 리스트만 쏙 뽑혔다.

 

 

4. 깐깐한 조건: AND (교집합)

현업에서 "가격이 싼 거 찾아줘"라고 단순하게 요청하는 상사는 없다.
"대여료는 싸면서($2.99 이하), 배상 비용도 저렴한($10 이하) 가성비 영화 찾아와" 처럼 복합적인 조건을 요구한다.

두 조건이 모두 맞아야 할 때는 AND로 연결하면 된다.

SELECT title, rental_rate, replacement_cost
FROM film
WHERE rental_rate <= 2.99
  AND replacement_cost <= 10;

두가지 필터를 AND로 모두 만족하는 결과를 출력한 예.

조건을 추가할 때마다 AND만 계속 붙여주면 된다. 엑셀에서 다중 필터를 거는 것보다 코드로 보니 논리 구조가 훨씬 명확하다.

 

 

5. 널널한 조건: OR (합집합)

반대로 "캘리포니아(California)에 살거나, 혹은 텍사스(Texas)에 사는 사람"을 찾고 싶을 땐 어떡할까?
둘 중 하나만 맞아도 되니까 OR를 쓴다.

SELECT district, phone
FROM address
WHERE district = 'California'
   OR district = 'Texas';

두 조건중 하나라도 만족한 조건을 찾을 OR를 사용한다. 두 이름을 한번에 검색 한 예.

 

 

📝 오늘의 문법 요약 (Cheat Sheet)

데이터 분석의 90%는 이 WHERE 절을 얼마나 잘 쓰느냐에 달려있다고 한다. 오늘 배운 연산자들을 정리해 둔다.

연산자 설명 예시
= 같다 (정확히 일치) amount = 0.99
<> 또는 != 다르다 amount != 0.99
>=, <= 크거나 같다 / 작거나 같다 price >= 20
AND 그리고 (깐깐한 조건) 조건1 AND 조건2
OR 또는 (널널한 조건) 조건1 OR 조건2
'' 문자열 감싸기 'Jared' (필수!)

[데이터 분석 독학기 #5 끝]

반응형