-
[SQL] WHERE과 HAVING의 차이database 2023. 4. 14. 17:22
WHERE과 HAVING 모두 조건을 설정한다는 특징에서 같다.
하지만,
WHERE은 데이터들 중 조건에 맞는 행을 가져오면 반면
HAVING은 그룹화된 데이터들 중 조건에 맞는 특정 그룹을 가져온다.
예를 들어, 아래와 같은 orders 테이블이 존재할 때.
order_id customer_id order_date total_amount 1 1 2022-01-01 100 2 2 2022-01-02 200 3 1 2022-01-03 150 4 3 2022-01-04 50 5 1 2022-01-05 80 WHERE 문
SELECT * FROM orders WHERE total_amount > 100;
결과
order_id customer_id order_date total_amount 2 2 2022-01-02 200 3 1 2022-01-03 150 HAVING 문
SELECT customer_id, COUNT(*) FROM orders GROUP BY customer_id HAVING COUNT(*) > 1;
결과
customer_id COUNT(*) 1 3 내가 헷갈렸던 사항은 COUNT(*) 였다.
COUNT(*)는 모든 레코드 수를 반환하는 의미이다.
group by는 customer_id로 선언되었기 때문에 COUNT역시 customer_id 레코드 수를 반환한다.
'database' 카테고리의 다른 글
[SQL] DISTINCT와 GROUP BY 차이 (0) 2023.04.14 h2 database (0) 2023.01.30 NoSQL과 SQL 차이 (0) 2023.01.30 릴레이션(테이블)와 entity 차이 (0) 2023.01.30 Entity (0) 2023.01.30