ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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
Designed by Tistory.