Étude
article thumbnail

SQL에서 데이터를 필터링할 때 가장 많이 사용하는 두 가지 방법이 WHERE 절과 HAVING 절입니다.

이 두 절은 모두 특정 조건을 만족하는 데이터를 추출하는 역할을 하지만, 적용 방식과 위치에 차이가 있습니다.

 

1. WHERE 절 (WHERE Clause)

 

WHERE 절이란?

 

WHERE 절은 각 개별 행(row)에 대해 조건을 검사하여, 해당 조건을 만족하는 행만 필터링하는 역할을 합니다.

주로 SELECT, UPDATE, DELETE, INSERT 문에서 사용되며, GROUP BY 절이 있다면 그 이전에 위치해야 합니다.

 

WHERE 절 사용법

 

일반적으로 WHERE 절에서는 비교 연산자 (>, <, =, !=), 논리 연산자 (AND, OR, NOT),

패턴 매칭 (LIKE) 등을 사용할 수 있습니다.

 

① SELECT 문에서의 사용 예시

SELECT order_id, name
FROM customer_orders
WHERE total >= 100;

customer_orders 테이블에서 총 주문 금액(total)이 100 이상인 주문의 order_id와 name을 조회

 

② UPDATE 문에서의 사용 예시

UPDATE customer_orders
SET status = 'Shipped'
WHERE order_id = 123;

 

order_id가 123인 주문의 status를 'Shipped'로 변경

 

2. HAVING 절 (HAVING Clause)

 

HAVING 절이란?

 

HAVING 절은 GROUP BY 절과 함께 사용되며, 그룹화된 결과(집계 데이터)에 대해 조건을 필터링할 때 사용됩니다.

즉, WHERE 절이 개별 행을 필터링하는 반면, HAVING 절은 그룹(group) 단위로 조건을 적용합니다.

 

HAVING 절 사용법

 

HAVING 절은 SUM(), AVG(), COUNT() 등의 집계 함수(Aggregate Function)와 함께 사용할 수 있습니다.

또한, GROUP BY 절이 없을 경우에는 WHERE 절과 동일한 역할을 합니다.

 

① SELECT 문에서의 사용 예시

SELECT name, SUM(total) AS total_spent
FROM customer_orders
GROUP BY name
HAVING total_spent >= 100;

 

name별로 주문 총액(SUM(total))을 계산한 후, 총 주문 금액이 100 이상인 고객 그룹만 조회

 

 

3. WHERE 절 vs. HAVING 절 비교

✅ WHERE 절은 각 행(row)별로 필터링

✅ HAVING 절은 그룹(group)별로 필터링

✅ WHERE → GROUP BY → HAVING 순서로 작성

✅ 함께 사용할 수 있음

 

4. WHERE 절과 HAVING 절을 함께 사용하기

두 절은 함께 사용할 수도 있습니다.

예를 들어, 특정 날짜 이후의 주문만 조회하면서, 고객별 주문 총액이 100 이상인 경우를 찾을 수도 있습니다.

SELECT name, SUM(total) AS total_spent
FROM customer_orders
WHERE date > '2020-12-31'  -- 개별 행 필터링
GROUP BY name
HAVING total_spent >= 100;  -- 그룹 필터링

 

1. 먼저 WHERE 절을 사용해 2021년 이후의 주문만 필터링

2. GROUP BY 절로 고객별로 그룹화

3. HAVING 절을 사용해 총 주문 금액이 100 이상인 고객만 필터링

'Programme > SQL' 카테고리의 다른 글

[SQL] 테이블 조회(2) - INNER JOIN, OUTER JOIN, CASE WHEN  (1) 2023.12.11
[SQL] 테이블 조회  (2) 2023.11.27
[SQL] 테이블 생성 (DDL & DML)  (0) 2023.11.23
profile

Étude

@프랑스어전공

https://blog.naver.com/captprice