뒤죽박죽 데이터가 한눈에 들어오는 기적: SQL 정렬과 검색 (ORDER BY, LIKE)

2025. 12. 8. 11:57SQL

반응형

데이터 분석의 본질은 결국 '비교'라고 생각한다.

"누가 가장 많이 샀을까?", "어떤 영화가 가장 길까?" 같은 질문에 답하려면, 뒤죽박죽 섞여 있는 데이터를 순서대로 나열(정렬)하는 것이 필수다.

오늘은 SQL에서 가장 속 시원한 기능인 ORDER BY(줄 세우기)와, 정확한 단어를 몰라도 찰떡같이 찾아주는 LIKE(스마트 검색) 연산자를 실습했다.
엑셀에서 필터 걸고 정렬 버튼 누르는 것보다 훨씬 직관적이고 강력하다.

 

1. 가나다순 정렬 (오름차순): 기본 중의 기본

고객 명단(customer)이 ID 순서대로 되어 있어서 이름을 찾기가 힘들었다. 이걸 이름(A-Z) 순서대로 정렬해 보자.
문법은 영어 그대로다. "ORDER BY( ~순서로 정렬해라)"

SELECT first_name, last_name, email
FROM customer
ORDER BY first_name ASC; -- ASC(오름차순)는 생략 가능

ORDER BY를 활용해 오름차순으로 정렬한 결과.

Aaron, Adam... 알파벳 순서대로 예쁘게 정렬됐다. 마음이 편안해진다.

 

2. 랭킹 뽑기 (내림차순 DESC) ⭐

사실 실무에서는 오름차순보다 내림차순(DESC)을 훨씬 많이 쓴다고 한다.
"매출 1위", "가장 비싼 상품" 처럼 Top N을 뽑아야 하기 때문이다.

영화 테이블(film)에서 러닝타임(length)이 가장 긴 영화부터 순서대로 조회해 봤다.

SELECT title, length
FROM film
ORDER BY length DESC;

DESC를 뒤에 붙여서 플레이타임을 내림차순으로 정렬한 결과.

💡 비전공자의 실수 포인트
처음에 ORDER BYWHERE보다 앞에 썼다가 에러가 났다.
생각해보면 당연하다. "데이터를 먼저 골라낸(WHERE) 다음에, 그 결과를 정렬(ORDER BY)하는 것"이다. 순서가 중요하다!
(SELECT -> FROM -> WHERE -> ORDER BY)

3. 검색의 신세계 (LIKE와 %)

이름이 정확히 기억 안 나고 "J로 시작했던 것 같은데..." 싶을 때가 있다.
이때 = 대신 LIKE와 와일드카드 %를 쓰면 탐정처럼 데이터를 찾아낼 수 있다.

  • 'J%': J로 시작하는 모든 것 (Jared, John, James...)
  • '%man': man으로 끝나는 모든 것 (Superman, Batman...)
  • '%er%': 중간에 er이 들어가는 모든 것
SELECT first_name, last_name
FROM customer
WHERE first_name LIKE 'J%';

LIKE와 %를 활용해서 J로 시작하는 성을가진 사람을 필터링 했다.

 

4. 여러 개 콕 집어내기 (IN)

"ID가 1번, 10번, 20번인 회원"을 찾을 때 OR를 3번 쓰는 건 비효율적이다. (코드도 못생겨진다)
IN을 쓰면 괄호 안에 나열하기만 하면 된다.

SELECT customer_id, first_name, last_name
FROM customer
WHERE customer_id IN (1, 10, 20);

OR를 쓰는 것 보다 훨씬 코드가 가독성이 좋다.

5. 범위 검색 (BETWEEN)

"가격이 $2.00 ~ $5.00 사이인 영화"를 찾을 때도 마찬가지다.
>=, <= 같은 부등호를 여러 번 쓰는 대신 BETWEEN을 쓰면 훨씬 직관적이다.

SELECT title, rental_rate
FROM film
WHERE rental_rate BETWEEN 2.00 AND 5.00;

 

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

오늘은 데이터를 입맛대로 요리하는 핵심 기능들을 배웠다. 특히 LIKE는 실무에서 정말 많이 쓰일 것 같다.

문법 설명 예시 비고
ORDER BY ... ASC 오름차순 정렬 (기본) ORDER BY price 1 -> 10, A -> Z
ORDER BY ... DESC 내림차순 정렬 ORDER BY price DESC 10 -> 1, Z -> A
LIKE '%' 패턴 검색 LIKE 'Kim%' 'Kim'으로 시작하는 모든 것
IN (...) 목록 중 하나 IN (1, 3, 5) 여러 값을 한 번에 선택
BETWEEN 범위 검색 BETWEEN 10 AND 20 A와 B 사이 (양끝 포함)

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

반응형